header 要素と headerfault 要素を使用すると、SOAP Envelope の Header 要素内で送信されるヘッダーを定義できます。ヘッダーを使用する SOAP Envelope に出現するヘッダーをすべて列挙する必要があるわけではありません。たとえば、特定のヘッダーは実際のペイロードに追加されるように WSDL の拡張機能によって暗黙で指定されている場合があり、そのようなヘッダーはここに列挙する必要はありません。
表 6 SOAP header 要素の属性
プロパティー |
説明 |
必須か省略可能か |
例 |
message |
header 要素へのバインディングで使用される WSDL メッセージを示します。 |
必須 |
part1 |
part |
WSDL メッセージから header 要素に含められるパートを示します。 |
必須 |
part1 |
use |
SOAP header でメッセージパートがどのようにエンコードされるかを示します。 |
必須 |
literal |
encodingStyle |
使用する特定のエンコーディングスタイルを示します。 |
省略可能 |
http://someencodingstyle |
namespace |
RPC 形式のメッセージのラッパー要素の名前空間を示します。 |
省略可能 |
urn:someNamespace |
表 7 SOAP headerfault 要素の属性
プロパティー |
説明 |
必須か省略可能か |
例 |
name |
headerfault 要素へのバインディングで使用される WSDL メッセージを示します。 |
必須 |
part1 |
part |
WSDL メッセージから headerfault 要素に含められるパートを示します。 |
必須 |
part1 |
use |
SOAP headerfault でメッセージパートがどのようにエンコードされるかを示します。 |
必須 |
literal |
encodingStyle |
使用する特定のエンコーディングスタイルを示します。 |
省略可能 |
http://someencodingstyle |
namespace |
RPC 形式のメッセージのラッパー要素の名前空間を示します。 |
省略可能 |
urn:someNamespace |
次の例は、SOAP header および headerfault 要素を示しています。
<definitions .... > <binding .... > <operation .... > <input> <soap:header message="qname" part="nmtoken" use="literal|encoded" encodingStyle="uri-list"? namespace="uri"?>* <soap:headerfault message="qname" part="nmtoken" use="literal|encoded" encodingStyle="uri-list"? namespace="uri"?/>* <soap:header> </input> <output> <soap:header message="qname" part="nmtoken" use="literal|encoded" encodingStyle="uri-list"? namespace="uri"?>* <soap:headerfault message="qname" part="nmtoken" use="literal|encoded" encodingStyle="uri-list"? namespace="uri"?/>* <soap:header> </output> </operation> </binding> </definitions> |
use、encodingStyle、および namespace 属性はどれも Body と同じ方法で使用されますが、ヘッダーにはパラメータが含まれないので style="document" と見なされる点だけが異なります。
QName タイプの message 属性と nmtoken タイプのpart 属性はともに、ヘッダータイプを定義するメッセージパートを参照します。
省略可能な headerfault 要素は、header 内に出現し、header と同じ構文を持ちます。この要素を使用すると、ヘッダーに関連しヘッダーで定義されているエラー情報を送信するための、ヘッダータイプを指定できます。SOAP 仕様では、ヘッダーに関連するエラーはヘッダー内で返す必要があると記述されています。この機構を使用すると、そのようなヘッダーの形式を指定できます。