理論的な知識:
ます。http://wso2.com/library/articles/differentiating-between-soap-versions-looking-soap-message/からの振替
SOAP名前空間に使用する すべてのXMLメッセージは、名前空間が正しく内のエンティティを修飾するために含まれています。SOAP 1.1とSOAP 1.2仕様では、それぞれがこれらの仕様に属するエンティティを定義するために独自の名前空間を定義していました。 SOAP 1.1:http://schemas.xmlsoap.org/soap/envelope/ SOAP 1.2:http://www.w3.org/2003/05/soap-envelope これは最も簡単で、一部の人々が使用し、時には唯一の方法です。あなたは、SOAPメッセージのSOAP名前空間を見て、簡単にそのバージョンを確認することができます。 <soapenv:封筒のxmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" のxmlns:XSD = "http://www.w3.org/2001/XMLSchema" のxmlns:XSI = "のhttp: //www.w3.org/2001/XMLSchema-instance "> <soapenv:ヘッダー> </ soapenv:ヘッダ> <soapenv:BODY> ... </ soapenv:body> </ soapenv:エンベロープ> SOAP 1.1メッセージ あなたはこれを使用すると、2つの異なるSOAPのバージョンを区別するために知っておく必要がある唯一の方法であることを主張するかもしれません。これは、すべての時間の場合ではないかもしれません。たとえば、あなたもSOAPメッセージ自体を読む前にSOAPのバージョンを知っておく必要がありますような状況が存在することができます。前の文は珍しいと思われるにもかかわらず、これは、我々は二つの異なるオブジェクトモデルまたは2つのSOAPのバージョン用の2つの異なるビルダーを持っているとき、それがどのようにあります。このような状況では、開発者として、あなたはバージョンを見つけるためにSOAPメッセージに触れている余裕はありません。おそらくあなたは、一時的に最初の数事象またはエンティティを記録することでごまかすことができますが、それは最善の解決策ではないかもしれません。 利用可能な場合は次のセクションでは、2つの異なるバージョンを区別するために、輸送結合規則を使用します。
ます。http://wso2.com/library/559/からの振替
A:ApacheのAxis2の/ Javaは、SOAPメッセージを受信すると、Axis2のは、このメッセージが付着SOAPのバージョンを確認しようとします。これは正しいSOAP仕様に対する検証目的のために必要とされます。Axis2のは、SOAPのバージョンを識別するために、2つの基本的なメカニズムを持っています。 1. SOAPエンベロープの名前空間を確認します。名前空間は「http://schemas.xmlsoap.org/soap/envelope/」であるならば、それはSOAP 1.1メッセージであり、名前空間は「http://www.w3.org/2003/05/soapある場合-envelope」、それはSOAP 1.2メッセージです。
輸送媒体2.IfはHTTPで、その後、我々は、SOAPアクションHTTPヘッダーのexistanceをチェック。メッセージは、SOAP 1.1である場合、のSOAPAction HTTPヘッダが存在しなければなりません。それはSOAP 1.2メッセージである場合には、Content-Typeヘッダ内部のSOAPActionパラメータが存在してもよい(このパラメータは、SOAP 1.2仕様のHTTPバインディングによれば必須ではない)
上記のパラメータの両方が存在する場合、Axis2のは、これらの評価からの出力を比較します。それらが一致しない場合は、Axis2のは、「トランスポート・レベルの情報は、SOAPメッセージの名前空間URIと一致しません」というエラーがスローされます。このエラーが発生したのであれば、あなたのSOAPメッセージとHTTPヘッダを確認してください。 適用対象: アパッチのAxis2 / Javaのv1.0を、より高いです
また、理論的な説明:
ます。http://www.herongyang.com/Web-Services/Perl-SOAP-1-2-Request-Differences-SOAP-1-1-and-1-2.htmlからの振替
このセクションでは、xmlme.comが提供するGetSpeech WebサービスのSOAP 1.1の要求およびSOAP 1.2の要求の違いについて説明します。 私の目標は、xmlme.comサーバーにSOAP 1.2リクエストを送信するためにSOAP :: Liteの使用であることを忘れないでください。 http://www.xmlme.com/WSShakespeare.asmx?op=GetSpeech:クライアントプログラムを書き込む前に、ので提供SOAP 1.2リクエストとSOAP 1.1の要求を比較してみましょう。 SOAP 1.1リクエスト: POST /WSShakespeare.asmx HTTP / 1.1 ホスト:www.xmlme.com のContent-Type:text / xmlで、文字セット= UTF-8 のContent-Length:長さ のSOAPAction: "http://xmlme.com/WebServices/GetSpeech" の<?xml version = "1.0"エンコード= "UTF-8"?> <石鹸:封筒のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" xmlns:XSD = "http://www.w3.org/2001/XMLSchema" のxmlns:石鹸= "http://schemas.xmlsoap.org/soap/envelope/"> <ソープ:ボディ> <GetSpeechのxmlns =」 http://xmlme.com/WebServices "> <要求>文字列</リクエスト> </ GetSpeech> </ SOAP:BODY> </石鹸:封筒> SOAP 1.2リクエスト: POST /WSShakespeare.asmx HTTP / 1.1 ホスト:WWW .xmlme.com のContent-Type:アプリケーション/石鹸+ xmlの; 文字セット= UTF-8 のContent-Length:長さ の<?xml version = "1.0"エンコード= "UTF-8"?> <SOAP12:封筒のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-インスタンス」 のxmlns:XSD = "http://www.w3.org/2001/XMLSchema" <SOAP12:BODY> <GetSpeechののxmlns = "http://xmlme.com/WebServices"> <要求>文字列</リクエスト> </ GetSpeech> </ SOAP12:BODY> </ SOAP12:封筒> 私は3つの違いを参照してください。 SOAP 1.2は、Content-TypeとSOAP 1.1の使用"text / xmlで"として"アプリケーション/石鹸+ xmlの"を使用します。 SOAP 1.2は、SOAPActionヘッダー行を使用していません。 SOAP 1.2は、 "http://www.w3.org/2003/05/soap-envelopeを" envolope名前空間とSOAP 1.1の使用"http://schemas.xmlsoap.org/soap/envelope/"として使用しています。 今、私は正しいSOAP 1.2要求を生成するために注意を払うように場所を知られています。 最終更新日:2009年。
キーポイント:HTTPのContent-Typeヘッダ情報が一貫してSOAPバージョン識別情報でなければなりません。
3つの違い: SOAP 1.2は、Content-TypeとSOAP 1.1の使用"text / xmlで"として"アプリケーション/石鹸+ xmlの"を使用します。 SOAP 1.2は、SOAPActionヘッダー行を使用していません。 SOAP 1.2は、 "http://www.w3.org/2003/05/soap-envelopeを" envolope名前空間とSOAP 1.1の使用"http://schemas.xmlsoap.org/soap/envelope/"として使用しています。