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 zu Mtom 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)
InformationsquelleAutor chanser | 2013-11-18
Schreibe einen Kommentar