Domino 9 und frühere Versionen > ND8: Entwicklung

Domino 8.5.1 Webservice, "choice" Element & base64Binary

(1/1)

m3:
Infos zu Fall (2) aus meinem alten Posting.

Das Ganze ist ein Folgefehler/Folgeproblem zu Domino 8.5.1 Webservice und WSDL/XSD mit "choice" Elementen bzw. Imported WSDL <choice> tag serializes invalid SOAP data an.

Wenn man wie in der Technote beschrieben die choice-Element erweitert, sodass der choice-Teil funktioniert, so kann man einen recht lustigen Effekt erleben, wenn in diesem Choice-Teil auch noch ein base64Binary enthalten ist.

Wenn das XSD so ausssieht:

--- Code: --- <xs:complexType name="BlockContent">
<xs:sequence>
<xs:element name="NextNr" type="xs:long"/>
<xs:element name="Data" type="xs:base64Binary"/>
</xs:sequence>
</xs:complexType
...
<xs:element name="GetDocumentBlockResponse">
<xs:complexType>
<xs:choice>
<xs:element name="BlockContent" type="das:BlockContent" minOccurs="0" />
<xs:element name="Error" type="das:Error" minOccurs="0" />
</xs:choice>
</xs:complexType>
</xs:element>
--- Ende Code ---
macht er zuerst mal keinen korrekten Code daraus.

Die XSD Anweisung

--- Code: ---     <xs:element name="Data" type="xs:base64Binary"/>                   
--- Ende Code ---
wird durch den Domino Designer WSDL Import in

--- Code: ---     Public Data() As Byte                                             
--- Ende Code ---
übersetzt. Damit der Code überhaupt mal funktioniert, muss man das händisch in

--- Code: ---    Public Data As XSD_BASE64BINARY     
--- Ende Code ---
ändern.

Hat man das getan, so kommt es nun auf die Größe des binären Files an, was der Domino macht. Ist das File klein, ist alles fein und das Ende des Webservice-Outputs schaut so aus:


--- Code: ---Zg0KMjcyNg0KJSVFT0YNCg==</ns0:Data>
         </ns0:BlockContent>
      </ns0:GetDocumentBlockResponse>
   </soapenv:Body>
</soapenv:Envelope>
--- Ende Code ---

Wird das File aber größer, so kommt vom Webservice das zurück:

--- Code: ---Mjc5DSUlRU9GDQ==
</ns0:Data></ns0:BlockContent><ns0:Error</ns0:GetDocumentBlockResponse></soapenv:Body>
</soapenv:Envelope>
--- Ende Code ---

Super, oder? Nicht mal valides XML!

Einziger "Würgaround": Das File in mehrere, sehr kleine Teile aufteilen, zerstückelt schicken und am anderen Ende wieder zusammenbauen. Super performant sag ich euch.


Ich hab das jetzt schon länger bei der IBM laufen und warte nun schon seit Wochen auf eine Rückmeldung aus USA, ob sie gedenken, das zu fixen.

Falls sich noch wer an den SPR BHUY83SJNK anhängen könnte/würde, wäre es fein. Im Normalfall wäre das ein Text analog:


--- Zitat ---This is an additional customer report for SPR __________ reproducible with Domino x.x.x on OS___ . Please create an additional customer report for SPR __________ to increase likeliness of a fix and close this PMR. Thanks!
--- Ende Zitat ---

Falls sich wer für Details, Demofiles, ... interessiert, bitte einfach fragen oder PM schicken.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln