Ist es möglich zu sehen, ob ein Web-Service SOAP 1.1 oder 1.2 verwendet, basierend auf den Informationen in der WSDL?Kann eine WSDL die SOAP-Version (1.1 oder 1.2) des Web-Service angeben?
Antwort
SOAP 1.1 verwendet Namensraum http://schemas.xmlsoap.org/wsdl/soap/
SOAP 1.2 Namespace verwendet http://schemas.xmlsoap.org/wsdl/soap12/
der WSDL in der Lage, Operationen unter Seife 1.1 und 1.2 Seife zur gleichen Zeit in der gleichen Wsdl zu definieren. Das ist nützlich, wenn Sie Ihre WSDL weiterentwickeln müssen, um neue Funktionen zu unterstützen, die Soap 1.2 (zB MTOM) benötigen. In diesem Fall müssen Sie keinen neuen Dienst erstellen, sondern nur den ursprünglichen entwickeln.
Ja, Sie können normalerweise sehen, welche SOAP-Version basierend auf der WSDL unterstützt wird.
Werfen Sie einen Blick auf Demo web service WSDL. Es hat einen Verweis auf den Soap12-Namespace, der angibt, dass SOAP 1.2 unterstützt wird. Wenn das nicht vorhanden wäre, wäre es wahrscheinlich sicher, dass der Service nur SOAP 1.1 unterstützt.
Die Soap12-Namespace-Referenz ist ein guter Indikator. Aber wenn es fehlt, kann es immer noch ein SOAP 1.2 Web Service sein - das Beispiel WSDL bei http://en.wikipedia.org/wiki/Web_Services_Description_Language als hat diesen Verweis nicht, aber vielleicht enthält es etwas anderes, was typisch für SOAP 1.2? – mjn
Ich habe diese Seite
http://schemas.xmlsoap.org/wsdl/soap12/soap12WSDL.htm
gefunden, die besagt, dass Soap 1.2 den neuen Namespace http://schemas.xmlsoap.org/wsdl/soap12/
Es ist im 'für SOAP WSDL 1.1 Binding Erweiterung 1.1' ist verwendet.
Gefundenes Transport-Attribut im Bindungselement, das uns mitteilt, dass dies die WSDL 1.1-Bindung für die HTTP-Bindung von SOAP 1.1 ist.
ex.
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
In WSDL, wenn Sie die Binding Abschnitt betrachten, werden Sie deutlich sehen, dass Seife Bindung explizit erwähnt wird, wenn der Dienst Seife 1.2 verwendet. Verweisen Sie auf das folgende Beispiel.
<binding name="EmployeeServiceImplPortBinding" type="tns:EmployeeServiceImpl">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="findEmployeeById">
<soap12:operation soapAction=""/>
<input><soap12:body use="literal"/></input>
<output><soap12:body use="literal"/></output>
</operation><operation name="create">
<soap12:operation soapAction=""/>
<input><soap12:body use="literal"/></input>
<output><soap12:body use="literal"/></output>
</operation>
</binding>
, wenn die Web-Service-Anwendung Seife 1.1, es nicht ausdrücklich jegliche Seife Version in der WSDL-Datei unter Bindungsabschnitt definieren. Verweisen Sie auf das folgende Beispiel.
<binding name="EmployeeServiceImplPortBinding" type="tns:EmployeeServiceImpl">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="findEmployeeById">
<soap:operation soapAction=""/>
<input><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></input>
<output><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></output>
</operation><operation name="create">
<soap:operation soapAction=""/>
<input><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></input>
<output><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></output>
</operation>
</binding>
Wie die SOAP-Version der SOAP-Nachricht bestimmen?
aber denken Sie daran, dass dies nicht viel empfohlene Möglichkeit ist, die Soap-Version zu ermitteln, die Ihre Webdienste verwenden. Die Version der Soap-Nachricht kann auf eine der folgenden Arten bestimmt werden.
1. Überprüfung der Namensraum des SOAP-Nachricht
SOAP 1.1 namespace : http://schemas.xmlsoap.org/soap/envelope
SOAP 1.2 namespace : http://www.w3.org/2003/05/soap-envelope
2. die Transportbindungsinformationen (http-Header-Informationen) der Seife Nachricht Überprüfung
SOAP 1.1: user text/xml für die Context-Type
POST /MyService HTTP/1.1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
SOAP 1.2: user application/soap + xml für die Context-Type
POST /MyService HTTP/1.1
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
3. Verwendung von SOAP-Fehlerinformationen
Die Struktur einer SOAP-Fehlermeldung zwischen den beiden Versionen ist unterschiedlich.
Der erste Teil Ihrer Antwort könnte einige zusätzliche Informationen verwenden - die "soap12" ist das Namespacepräfix, nicht der Namespace selbst. Sie müssen überprüfen, wie das Präfix "soap12" aufgelöst wird und welche Version von soap angibt. Jemand könnte soap12 als Präfix verwenden, aber auf den soap11-Namespace-URI zeigen. – csadler
- 1. Überprüfen Sie programmatisch die Version von SOAP (1.1 oder 1.2 oder beide) eine WSDL-Datei unterstützt
- 2. flex soap 1.2 webservice
- 3. TLS 1.1/1.2 Unterstützung für Xamarin.Android
- 4. Wie erstellt man eine 1.1, 1.2 1.3 ... HTML-Liste?
- 5. Latex: Wie kann ich verschachtelte Listen zu erstellen, die die 1.1 aussehen, 1.1.1, 1.1.2, 1.2
- 6. Java 1.3 Websphere 5 Anwendung -> brauche Aufruf SOAP 1.1 oder SOAP 1.2 Web-Service
- 7. JAXWS (Metro) WebService von WSDL generieren
- 8. Wie kann ich wissen, welche Django-Version ich verwende? ist es 1.0, 1.1 oder 1.2?
- 9. Kann ich TLS Version 1.1 oder 1.2 in Python 2 verwenden?
- 10. Axis 1.2 Webservice mit JDK 1.6.0
- 11. Wie Port-Namen in PHP WSDL angeben
- 12. Wie unterstützt man TLS 1.1, 1.2 für Python (2.7)
- 13. Abstrakte Typen in Webservice-Definition (WSDL)
- 14. Webservice mit WSDL- und XSD-Dateien konsumieren
- 15. Verwenden von TLS 1.1/1.2 in WSO2 ESB ausgehende Anfrage
- 16. Eine SOAP 1.2-Nachricht ist nicht gültig, wenn sie an einen SOAP 1.1-Endpunkt gesendet wird
- 17. WebService-Client Ausnahme: kann WSDL nicht importieren: Bindung
- 18. Angeben der Operationsreihenfolge in Spring generierte WSDL
- 19. WSDL-first Ansatz: Wie verschiedene Namen für wsdl angeben: Port und WSDL: Bindung?
- 20. TLS 1.1, 1.2 in WebView für Android <= 4.3
- 21. Seife 1.2 Android Bitte liefern Sie eine gültige Seife Aktion
- 22. Kann WebService parallel oder nur spaltenförmig arbeiten?
- 23. Benutzerdefiniertes Binding mit einem weblogic webservice ws-security 1.2
- 24. Ist es Webservice oder Webservice?
- 25. SVCUtil oder WSDL Stapelverarbeitung
- 26. Was ist die bevorzugte Methode für eine 'WSDL' für den REST-Webservice?
- 27. generieren WSDL-Datei von WSDL-URL
- 28. WSDL-Content, Binding: Eingabetyp "Literal" anstelle des Namens des Complextyps
- 29. Angeben von Validator in JSF 1.2 benutzerdefinierte Komponente
- 30. Angeben des benutzerdefinierten Anwendungskontexts
MTOM kann mit soap1.1 verwendet werden – GregD