SOAP入門
第2回:SOAPメッセージの構成
(株)日本ユニテック
吉田 晃伸
イントロダクション
第一回目の記事ではSOAPの概要を知ることが出来ました。第二回目となる今回の記事ではSOAPメッセージの構成について解説します。SOAPがどのような要素から構成され、それぞれがどのような役割を持っているのかを解説します。
SOAPメッセージ構成
SOAPのメッセージ構成は図1に示すような形になっています。SOAPメッセージは大きくわけて「ヘッダ(Header)」と「SOAPエンベロープ(SOAP
Envelope)」からなっています。さらに「SOAPエンベロープ」は「SOAPヘッダ(SOAP Header)」と「SOAP本体(SOAP
Body)」から構成されます。リスト1は実際のメッセージ例とその構成を重ねたものです。では、一つ一つの構成要素について詳しく見ていきましょう。
図1.SOAPメッセージ構成
リスト1.HTTPバインディングされたSOAPメッセージの例
ここでいうヘッダはSOAPヘッダとは異なるのもで、SOAPの実装を行うプロトコルに依存したヘッダのことです。これをプロトコルバインディングヘッダとも呼びます。この中にプロトコル毎に定められているヘッダ情報が記述されることになっています。この情報を受け取ったサーバーは、この後に続くメッセージがSOAPであることを理解してSOAPに関する処理を立ち上げることになります。リスト1はHTTPバインディングのメッセージ例です。
SOAPエンベロープはその名の通り、SOAPメッセージ全体を包み込む「封筒(Envelope)」の役割を持っており、SOAPメッセージはSOAPエンベロープを最上位要素とするXML文書になります。要素名は「Envelope」です。この要素は必ず存在しなければなりません。SOAPエンベロープは子要素としてSOAPヘッダとSOAP本体を持っています。
SOAPヘッダは、SOAP本体中のメッセージを誰が(どのサーバーが)どのように処理を行うかなどのSOAPメッセージを処理するアプリケーションが解釈すべき情報を記述します。つまりSOAPメッセージの宛先と見ることができます。SOAPヘッダ中には任意の要素や情報を記述できます。要素名は「Header」となります。SOAPヘッダは選択可能な項目となっていますので、あってもなくても良いことになります。ただしこの要素を記述する場合はSOAPエンベロープの最初の子要素になっていなければなりません。
SOAP本体には最終的なメッセージの受信者が処理を行う情報が記述されます。つまりSOAPメッセージの本文が記述されています。SOAP本体はメッセージの受信者側が理解できるXML形式で記述しなければなりません。要素名は「Body」となります。この要素はSOAPエンベロープの子要素であり必須の要素です。
SOAP本体中記述される内容としては、例えば宛先に渡すXMLデータの内容、またはRPCで使用するならば、メソッドやメソッドに必要なパラメータなどの要素を記述します。またレスポンス中では処理結果を記述するのもSOAP本体になります。SOAPの処理が失敗した際のエラー情報もSOAP本体中に記述されることになっています。
SOAP本体に記述する内容:
・ メッセージ内容
□ データ内容
□ メソッド名
□ パラメータ など
・ エラー情報
□ エラー名、エラーコード
□ エラー内容 |
リスト1は、SOAPを使用したRPCの例です。「getPitchingResult」というメソッドを用いて、それ以下の要素で指定されるピッチャーの成績を取り出すという仕組みになります。このようなRPCを実現するにはいくつか規則があります。次にその規則を見てみましょう。
RPCの実現方法
SOAPの利用方法でもっとも必要性が高いと考えられるのはRPCを実現することです。これを実現するためには、SOAP本体中に記述されるメソッド呼び出しとレスポンスのXMLでの記述方法が統一されている必要があります。まずメソッド呼び出しですが、リスト2のように記述します。
<メソッド名>
<パラメータ名1>パラメータ値</パラメータ名1>
<パラメータ名2>パラメータ値</パラメータ名2>
</メソッド名> |
リスト2.メソッド呼び出し
メソッド名をタグ名とした要素を作成します。メソッドに渡す引数はそれらの子要素として表現しなければなりません。
次にレスポンスについて見てみましょう。レスポンスはリスト3のように記述します。
<メソッド名Response>
<パラメータ名1>パラメータ値</パラメータ名1>
<パラメータ名2>パラメータ値</パラメータ名2>
</メソッド名Response> |
リスト3.メソッドレスポンス
レスポンスのタグ名は通常、呼び出されたメソッド名の後ろに「Response」をつけた名前を用いることになっています。このような規則を守ることによってSOAPによるRPCが実現できることになります。
まとめ
今回はSOAPメッセージの具体的内容を知ることが出来ました。それぞれの構成要素がどのような役割を持っているのかを理解することが出来ました。さてSOAP連載の最終回となる次回は、SOAPの活用例やSOAPに関連した規格について解説したいと思います。
関連サービス
XML、WEBサービスを使ったシステム構築への支援業務
関連キーワード: SOAP
関連キーワード: WEBサービス
関連キーワード: WSDL
|