WSDLの情報に基づいて、WebサービスがSOAP 1.1または1.2を使用しているかどうかを確認できますか?
SOAP 1.1は名前空間を使用します http://schemas.xmlsoap.org/wsdl/soap/
SOAP 1.2は名前空間を使用します http://schemas.xmlsoap.org/wsdl/soap12/
Wsdlは、同じwsdlで同時にsoap 1.1とsoap 1.2の下で操作を定義できます。 SOAP 1.2(例:MTOM)を必要とする新しい機能をサポートするためにwsdlを進化させる必要がある場合に便利です。この場合、新しいサービスを作成する必要はなく、元のサービスを進化させるだけです。
WSDLでBindingセクションを見ると、サービスがsoap 1.2を使用している場合、soapバインディングが明示的に言及されていることが明確にわかります。以下のサンプルを参照してください。
<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>
webサービスがsoap 1.1を使用する場合、バインディングセクションの下のWSDLファイルでsoapバージョンを明示的に定義しません。以下のサンプルを参照してください。
<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>
SOAPバージョンのSOAPメッセージ?
ただし、これはWebサービスが使用するSOAPバージョンを決定するためのあまりお勧めの方法ではないことに注意してください。 soapメッセージのバージョンは、次のいずれかの方法で決定できます。
1。SOAPメッセージの名前空間を確認する
SOAP 1.1 namespace : http://schemas.xmlsoap.org/soap/envelope
SOAP 1.2 namespace : http://www.w3.org/2003/05/soap-envelope
2。soapメッセージのトランスポートバインディング情報(httpヘッダー情報)を確認する
SOAP 1.1:Context-Typeのユーザーテキスト/ xml
POST /MyService HTTP/1.1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
SOAP 1.2:Context-Typeのユーザーapplication/soap + xml
POST /MyService HTTP/1.1
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
。using SOAP fault information
2つのバージョン間でSOAP障害メッセージの構造は異なります。
このページを見つけました
http://schemas.xmlsoap.org/wsdl/soap12/soap12WSDL.htm
soap 1.2は新しい名前空間を使用すると言います http://schemas.xmlsoap.org/wsdl/soap12/
これは、「SOAP 1.1」のWSDL 1.1バインディング拡張機能にあります。
はい、通常、WSDLに基づいてサポートされるバージョンSOAPバージョンを確認できます。
デモWebサービスWSDL をご覧ください。それは、SOAP 1.2。をサポートしていることを示すsoap12名前空間への参照を持っています。もしそれがなければ、おそらくサービスはSOAP 1.1 。
これがSOAP 1.1 HTTPバインディングのWSDL 1.1バインディングであることを示すbinding-elementにtransport-attributeが見つかりました。
例.
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>