Autor Thema: Domino 8.5.1 Webservice, "choice" Element & base64Binary  (Gelesen 2323 mal)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
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>
macht er zuerst mal keinen korrekten Code daraus.

Die XSD Anweisung
Code
     <xs:element name="Data" type="xs:base64Binary"/>                   
wird durch den Domino Designer WSDL Import in
Code
     Public Data() As Byte                                              
übersetzt. Damit der Code überhaupt mal funktioniert, muss man das händisch in
Code
    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:

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

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>

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!

Falls sich wer für Details, Demofiles, ... interessiert, bitte einfach fragen oder PM schicken.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz