Ich habe ein Problem mit der Generierung eines Client-Proxy in VS 2015, wo die von der WSDL generierte Referenz ein base64Binary-Objekt als ein Byte [] [] interpretiert.Base64Binary interpretiert als Byte [] []
Hier ist der WSDL-Abschnitt:
<xs:complexType name="putPlanning">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="data" type="xs:base64Binary" />
</xs:sequence>
</xs:complexType>
Und in der generierten Referenz:
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="xxx.xxx.xxx", Order=8)]
[System.Xml.Serialization.XmlElementAttribute("data", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="base64Binary")]
public byte[][] data;
Ich bin ziemlich sicher, das ein Problem mit der Generierung der WSDL unter dem Web-Service-Java ist, Aber könnte jemand mit etwas mehr Erfahrung ein Licht auf das werfen, was die Ursache auf der Client- oder Serverseite sein könnte?
Ich würde erwarten, dass Base64Binary als Zeichenfolge [] und nicht Byte [] [] übersetzt.
Dies funktioniert nicht, da ich erwarte, dass der Webservice Base64-Strings will, aber der Client-Proxy erzwingt ein byte [] [] Array von Arrays.
Weitere Infos:
In SOAPUI die folgenden Code Arbeit mit diesem Web-Service:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:psw="http://xxx.xxx.xxx/">
<soapenv:Header/>
<soapenv:Body>
<psw:putPlanning>
<!--Zero or more repetitions:-->
<data>*base64string==*</data>
<data>*base64string==*</data>
</psw:putPlanning>
</soapenv:Body>
</soapenv:Envelope>
so das sagt mir, eine Reihe von base64-Strings (tatsächliche base64 String ommited, da sie zu lang sind) ist akzeptiert. Die Frage ist also, warum Visual Studio einen Byte [] [] -Datentyp basierend auf der WSDL generiert hat?
'... könnte jemand mit einem wenig mehr Erfahrung ein Licht auf leuchten, was die Ursache sein könnte ...?' Die Ursache der _was? _ – Abion47
„base64Binary als Byte interpretiert [] [] "... Ich denke nicht, dass es sein sollte :) –
Aber xs: base64Binary sollte am Client als String [] und nicht Byte [] [] interpretiert werden ... ich vermisse etwas, das ist das ganze Problem hier , ein Byte [] [] ist nicht korrekt, da der Web-Service ein Array von base64-Strings erwartet, kein Byte-Array von Byte-Arrays. –