2013-07-26 7 views
5

Ich habe Probleme mit Java WS zu sprechen. Ich verwende "wsHttpBinding" -Bindung mit Client-Zertifikaten für die Authentifizierung, Nachrichtencodierung ist festgelegt "Text", .net Framework ist 4.0. Server-Seite ist Java und ich habe keine Kontrolle darüber. Die Verbindung wird über Fiddler hergestellt (so sehe ich Anfragen auf der Leitung, viel benutzerfreundlicher als die Suche nach "System.Net").WCF-Client im Gespräch mit Java WS, Ausnahme: Der Inhaltstyp application/xop + xml; type = "application/soap + xml" der Antwortnachricht

Ausnahme ich erhalte, ist folgende:

Der Inhaltstyp application/xop + xml; type = "application/soap + xml" der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung überein (application/soap + xml; charset = utf-8).

Wenn ich Nachricht ändern Codierung "MTOM", dann sind die Ausnahme Änderungen:

Der Inhaltstyp application/xop + xml; type = "application/soap + xml" der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung überein (multipart/related; type = "application/xop + xml").

Der Server akzeptiert sowohl "Text" als auch "Mtom" Nachrichtencodierungen für die Anfrage, und die Antwort ist immer die gleiche. Dies ist die rohe Reaktion, die ich vom Server bekommen:

HTTP/1.1 200 OK 
X-Backside-Transport: OK OK 
Connection: Keep-Alive 
X-Powered-By: Servlet/3.0 
SOAPAction: "" 
Content-Type: application/xop+xml; type="application/soap+xml" 
Content-Language: en-US 
Date: Thu, 25 Jul 2013 13:05:09 GMT 
Content-Length: 628 

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope ... </env:Envelope> 

Von allen docs, die ich gelesen habe, Antwort, die irgendwo zwischen Nachricht regelmäßigen SOAP und MTOM-Nachricht zurückgegeben wird. Ich sage das, weil jedes Beispiel, das ich gesehen habe, sagt, dass die MTOM-Anfrage und -Antwort MIME als Umschlag für die Kommunikation verwendet: reguläre SOAP-Nachricht wird in XOP-Paket eingeschlossen, und dann wird diese XOP-Nachricht mit MIME umhüllt. Sogar die W3C-Empfehlung verwendet MIME für XOP-Pakete: W3C: XML-binary Optimized Packaging. Auszug aus diesem Link:

Content-Type: Multipart/Related;boundary=... 

Wenn ich versuche, rufe Web-Service mit dem Werkzeug „soapUI“ (geschrieben in Java, erhältlich von „www.soapui.org“), Service-Aufruf erfolgreich ausgeführt und Antwort wird ohne analysiert Problem.

FYI, ist dies ein Quer Post von MSDN WCF forum., Aber keine Antworten dort noch.

Jede Idee ist willkommen, danke im voraus,

Alex

+0

Ich bin mit genau dem gleichen Problem konfrontiert. Erstellen einer benutzerdefinierten Bindung und Festlegen der Nachricht messageVersion = "Soap12" funktionierte nicht für mich. Ein Unterschied, den ich sehen kann, ist mein Web-Service-Anruf ist https, aber dieser Beitrag ist für http scheint es. –

+0

Haben Sie eine Lösung gefunden? Ich habe das gleiche Problem. Die verbindliche Konfiguration, die in der ersten Antwort vorgeschlagen wurde, ist jedoch für web.config nicht gültig. –

+0

HTTP vs HTTPS macht keinen Unterschied: Dies ist nur Transportdetails. Das Problem besteht in der Formatierung der Nachricht.Das Problem, das ich hatte, war, dass die Regierungseinheit einen Java-Server (mit IBM WebSphere-Stack) benutzte und ihr Stack nicht konforme Nachrichten erzeugte. Es gab zwei Möglichkeiten in meinem Fall: 1.) benutze SoapUI als externe App, die die Nachricht herunterladen und dann die XML in C# 2 analysieren werde.) Rohe XML editieren, die durch das Netzwerk kommt und die XML Nachrichten an Standards anpassen -> dies So wurde alles in C# erledigt. – alemarko

Antwort

0

Versuchen Sie, die Nachrichtencodierung in der Bindungskonfiguration zu messageEncoding="Mtom" und basicHTTPBinding statt wsHTTP ein ...

Hoffe, es hilft erobern!

2

Ich benutze auch CXF und hat einen C# -Client. Versuchen Sie, Ihre Bindungseinstellung zu ändern, ersetzen Sie textMessageEncoding durch mtomMessageEncoding. Etwas wie dieses:

<binding name="yourSoapBinding"> 
    <mtomMessageEncoding messageVersion="Soap12"/> 
    <httpTransport /> 
</binding> 
Verwandte Themen