6.2. SOAP1.1 バインディングへの SOAP ヘッダーの追加
概要 リンクのコピーリンクがクリップボードにコピーされました!
SOAP ヘッダーは、soap:header
要素をデフォルトの SOAP 1.1 バインディングに追加して定義されます。soap:header
要素は、バインディングの input
、output
、および fault
要素の任意の子です。SOAP ヘッダーは親メッセージの一部になります。SOAP ヘッダーは、メッセージとメッセージ部分を指定することによって定義されます。各 SOAP ヘッダーにはメッセージ部分を 1 つだけ含めることができますが、必要な数の SOAP ヘッダーを挿入できます。
構文 リンクのコピーリンクがクリップボードにコピーされました!
SOAP ヘッダーを定義するための構文を 例6.3「SOAP ヘッダー構文」 に示します。soap:header
の message
属性は、ヘッダーに挿入される部分が取得されたメッセージの修飾名です。part
属性は、SOAP ヘッダーに挿入されたメッセージ部分の名前です。SOAP ヘッダーは常にドキュメントスタイルであるため、SOAP ヘッダーに挿入される WSDL メッセージ部分は要素を使用して定義する必要があります。message
と part
属性はともに、SOAP ヘッダーに挿入するデータを完全に記述します。
例6.3 SOAP ヘッダー構文
必須の message
と part
属性と同様に、soap:header
は、namespace
、use
、および encodingStyle
属性もサポートします。これらの属性は soap:body
の場合と同様に soap:header
でも機能します。
本文とヘッダーの間でメッセージを分割 リンクのコピーリンクがクリップボードにコピーされました!
SOAP ヘッダーに挿入されるメッセージ部分は、コントラクトからの任意の有効なメッセージ部分にすることができます。これは、SOAP 本体として使用されている親メッセージの一部である場合もあります。同じメッセージで情報を 2 回送信する可能性は低いため、SOAP バインディングは、SOAP 本文に挿入されるメッセージ部分を指定する手段を提供します。
soap:body
要素には、部分名のスペース区切りリストを取る任意の属性 parts
があります。parts
が定義されると、リストされたメッセージ部分のみが SOAP ボディーに挿入されます。その後、残りの部分を SOAP ヘッダーに挿入できます。
親メッセージの一部を使用して SOAP ヘッダーを定義すると、Apache CXF が自動的に SOAP ヘッダーを入力します。
例 リンクのコピーリンクがクリップボードにコピーされました!
例6.4「SOAP 1.1 SOAP ヘッダーを使用したバインド」 は、例6.1「注文システムインターフェイス」 に示されている orderWidgets
サービスの変更バージョンを示しています。このバージョンが変更され、各注文のリクエストおよび応答の SOAP ヘッダーに xsd:base64binary
値が配置されます。SOAP ヘッダーは、widgetKey
メッセージの keyVal
部分として定義されます。この場合、SOAP ヘッダーは入力メッセージまたは出力メッセージの一部ではないため、アプリケーションロジックに SOAP ヘッダーを追加する必要があります。
例6.4 SOAP 1.1 SOAP ヘッダーを使用したバインド
例6.4「SOAP 1.1 SOAP ヘッダーを使用したバインド」 を変更して、ヘッダー値が入力メッセージと出力メッセージの一部になるようにします。