Wie kann ein WCF-client verbrauchen multipart/related java-webservice-response?
Schrieb ich ein WCF C# - client, verbraucht nur einen Java-webservice:
var client = new abcClient("abc");
var response = client.AbcTransaction(msg);
Den WCF-Bindung info aus dem web.config ist:
<customBinding>
<binding name="abcSOAP">
<textMessageEncoding messageVersion="Soap12" />
<httpsTransport requireClientCertificate="true" />
</binding>
</customBinding>
Sieht es ziemlich straight-forward, right? ...Und in der Tat, SoapFaults sind einfach zu konsumieren:
HTTP/1.1 500 Internal Server Error
Content-Length: 783
Content-Type: application/soap+xml;charset=UTF-8
Server: Microsoft-IIS/8.0
Date: Mon, 18 Nov 2013 14:06:18 GMT
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body><soap:Fault>...
Jedoch der webservice sendet "normale" Reaktionen in der multipart/related content-type:
HTTP/1.1 200 OK
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:c79210c3-bbef-4aa3-82ae-6a20c7a96564"; start="<[email protected]>"; start-info="application/soap+xml"
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
Date: Mon, 18 Nov 2013 14:11:25 GMT
Content-Length: 658
--uuid:c79210c3-bbef-4aa3-82ae-6a20c7a96564
Content-Type: application/xop+xml; charset=UTF-8; type="application/soap+xml";
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">...
Dies führt zu einer ProtocolException in der WCF-client, weil die WCF-client nicht erwarten, dass eine multipart/related Antwort. Die ProtocolException Meldung (in Deutsch):
Der Inhaltstyp "multipart/related; type="application/xop+xml";
boundary="uuid:ead716a3-4b8b-4207-ad66-b9f18ae368b2";
start="";
start-info="application/soap+xml"" der Antwortnachricht stimmt nicht
mit dem Inhaltstyp der Bindung (application/soap+xml; charset=utf-8)
überein. Wenn Sie einen benutzerdefinierten Encoder verwenden, sollten
Sie sicherstellen, dass die IsContentTypeSupported-Methode korrekt
implementiert ist. Die ersten 1024 Bytes der Antwort waren: ...
In Englisch:
Dem content-type "multipart/related; type="application/xop+xml";
boundary="uuid:ead716a3-4b8b-4207-ad66-b9f18ae368b2";
start="";
start-info="application/soap+xml"" der response-Nachricht
nicht mit dem Inhaltstyp der Bindung (application/soap+xml; charset=utf-8). Wenn Sie einen benutzerdefinierten encoder verwenden, werden Sie sicher, dass die
IsContentTypeSupported-Methode richtig umgesetzt wird. Die ersten 1024
bytes der Antwort waren: ...
Hat jemand eine Idee, wie ich die verbrauchen kann dies multipart/related Nachricht mit einem WCF-client (ohne mithilfe der HttpWebRequest-Klasse)? Gibt es eine Konfiguration für dieses szenario?
- Haben Sie versucht, die Umstellung vom
text
zuMtom
SOAP-Nachrichten zu Kodieren? Config:<binding messageEncoding="Mtom">
/ Code:binding.MessageEncoding = WSMessageEncoding.Mtom;
- Ja, es scheint nicht, etwas zu ändern. (Werde ich hinzufügen, die verbindlich eine info zu meiner Frage)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Max und Mehmet Hinweise zeigte die richtige Richtung, aber ich musste ein bisschen ändern, mehr.
Da ich das element in der wcf-Konfiguration ignoriert das messageEncoding="Mtom" - Attribut.
Anstelle der Verwendung von Attribut -, scheint es besser, das element direkt:
Durch, dass Sie auch definieren können mehr Konfigurationen, wie messageVersion.
Ich denke, dass die Konvertierung von system in MTOM funktionieren wird für, die.