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:
<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>
macht er zuerst mal keinen korrekten Code daraus.
Die XSD Anweisung
<xs:element name="Data" type="xs:base64Binary"/>
wird durch den Domino Designer WSDL Import in
übersetzt. Damit der Code überhaupt mal funktioniert, muss man das händisch in
Public Data As XSD_BASE64BINARY
ä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:
Zg0KMjcyNg0KJSVFT0YNCg==</ns0:Data>
</ns0:BlockContent>
</ns0:GetDocumentBlockResponse>
</soapenv:Body>
</soapenv:Envelope>
Wird das File aber größer, so kommt vom Webservice das zurück:
Mjc5DSUlRU9GDQ==
</ns0:Data></ns0:BlockContent><ns0:Error</ns0:GetDocumentBlockResponse></soapenv:Body>
</soapenv:Envelope>
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:
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!
Falls sich wer für Details, Demofiles, ... interessiert, bitte einfach fragen oder PM schicken.