Frage

muss ich eine 3rd-Party-Web-Service verwenden implementiert in .NET 2.0 (IIS, natürlich).

Ich habe ein Java-Client zu machen. Ich verwende wsdl2java die SOAP-Stub zu erzeugen.

Da das ursprüngliche Apache Axis Projekt jetzt nicht betreut wird, und ich einige Probleme mit einigen Antworten aus der Service-Parsing, konvertierte ich den Client die neueste (1.5) Version von Axis2 zu verwenden. Nun wird der .NET-Dienst nicht einmal meine Wünsche erkennen.

konnte ich die „Chunking“ ausgeschaltet erhalten (wobei „Stub“ ist eine Variable vom Typ MumbleStub von wsdl2java erzeugt, und ich zeige, was mehrere Zeilen Code als eine schreckliche Linie hier sind):

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. so zumindest der Dienst meine Anfrage erkennt AS eine Anfrage, wenn auch ein schlechten: „HTTP/1.1 400 Bad Request“ ist die Antwort jetzt (im Gegensatz zu einer „Intro / Zusammenfassung“ Seite gegen bietet mir ein Link zur WSDL).

bemerkte ich, dass die Achse ( "1") Anfrage Content-Type-Header (text / xml, vs application / soap-xml), eine andere hatte, und ich frage mich, wie diese Request-Header zu ändern, wenn dies in der Tat das Problem ist.

Alternativ hat sonst jemand dieses Problem gehabt? Ist das Problem wirklich die (nichtanzeigbaren hier, da es wie „Element Injektion“ in das Blog-Engine sieht) ... xml version- „1.0“ ... „XML Meta-Intro-Tag“, dass Axis2 zu Beginn der Anfrage hinzugefügt?

WS-Deathstar, in der Tat.

War es hilfreich?

Lösung

Wie Sie die verschiedenen Content-Type-Header erwähnen ich denke, Ihr Client versucht, SOAP 1.2-Anforderungen zu senden und das 3rd-Party-App versteht nur SOAP 1.1

Versuchen Sie, die verwendete Seife Version ändern, wie AFAIK AXIS2 SOAP verwendet 1.2 standardmäßig

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top