| ||||||||||
| 前のページ 1 2 | ||||||||||
| SOAP body要素 | ||||||||||
body要素はRPCコールやRPCレスポンスを送信したり、エラーを報告したりするのに使用されます。body項目は名前で定義され、有効なnamespaceURI、ローカル名によって構成されます。 body要素の直接の子要素はnamespace修飾されることもあります。HTTP上にメッセージを送信する場合、コールを送信したり、レスポンスを取得するのにPOSTメソッドを使用すべきです。PHPでは、これにソケット関数を使用することもできます。 コンテンツタイプは"text/xml"に設定すべきですが、"text/plain"でも動作します。エンコーディングは処理するアプリケーションに依存します。 リスト1 <!-- 最初の部分: SOAPリクエスト -->リスト1の最初の部分に、SOAPを使用して実行された、有効なRPCコールの例を示します。このメッセージにはheader要素はありませんが、header 要素は省略可能ですので、問題ありません。body要素を見てみましょう。 サブ要素であるGetPrice(Some-URIによって定義されています)では、値段を取得するために、製品番号と名前を保持しています。リスト1の2番目の部分には、有効なレスポンスを格納しています。 これはHTTP headerのない、最低限のXML レスポンスメッセージであることに注意してください(数行は操作が成功したことや、日付やコンテンツの長さなどの追加情報を指定するために、サーバから送信されます)。 これは基本的なSOAP RPCコールとRPCレスポンスのサンプルです。実際のアプリケーションは、通常多数のサブ要素が配列され、もっと大量のデータを処理するため、非常に複雑になっています。簡潔に説明するために、できるだけこの例を単純なものにしました。 | ||||||||||
| SOAP Fault要素 | ||||||||||
リモートアプリケーションの実行中にエラーが起きた場合、プログラムに予期された出力を行わせず、どのようなエラーが生じたのかなど、クライアントに情報を提供することが必要です。 これはSOAP fault要素の重要な役割です。これはenvelope 要素の子要素であり、body要素の唯一の子要素となります。つまり、body要素にfault 要素をともなう時は、他の情報が渡されないことを意味します。 fault要素は、その問題の原因を判断するCode と呼ばれる標準エラーコード(例えば、問題の原因が送信者側にあるのか、受信者側にあるのかを判断します)と、どのようなエラーが起こったのか説明するReason(例えば、タイムアウトなどの理由)から主に構成されます。 それには、SOAPメッセージパス中のどのノードがエラーを引き起こしたか説明するNode要素や、ノードの役割を記述するのに用いられるRole要素など、追加情報を含む場合もあります。さらに、Detail要素は、どのようなエラーが起きたのか詳細に説明したい場合に使用します。 実際に、これから紹介するアプリケーション内に、fault要素を使用します。 | ||||||||||
| WSDLの概要 | ||||||||||
WSDL(Web Services De.nition Language)について簡単に説明します。WSDLを知ることで、Webサービスがどのように動いているか、よりよく理解することができます。WSDLはWeb サービスについて記述するために作成された、XMLベースのドキュメント形式です。 WSDLの主な目的は、Webサービスのインターフェースに関する情報を提供することです。インターフェースに関する情報がないと、別のプログラムがそのWebサービスを利用することができません。 WSDLドキュメントは、Webサービスを利用するために必要なすべての情報を含んでいます。例えば、使用する方法、要求されるパラメータ、生成される出力のタイプなどの情報です。このため、WSDLによる記述は、ごく簡単なSOAPメッセージのやり取りを表現する場合でも、かなり長い記述となります。 もしWSDLについてもっと学びたいという時は、W3C(World Wide Web Consortium)のページであるhttp://www.w3.org/TR/wsdl(日本語訳:http://www.research.ibm.com/trl/projects/xml/SOAP1.1-j-ibm-revision2.html)を参照してください。 | ||||||||||
| 前のページ 1 2 | ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||

