リクエストとレスポンスのエンコード ( DataStage )

SOAP(Simple Object Access Control)は、アプリケーションとウェブサービスの間で情報を交換するためのメッセージング・フレームワークである。 SOAPを使用する場合、ウェブサービスのリクエストとレスポンスは、テキストベースの標準として確立されているXML(Extensible Markup Language)でエンコードされます。 XML要素と属性は、ウェブサービスと IBM® の間で交換されるデータを特定します。 DataStage®.XMLスキーマを使用して、Webサービスは交換に必要なデータを指定します。

リクエストとレスポンスのサンプル

次のような要請と回答を考えてみよう。 リクエスターアプリケーションは、Samples Outdoor Companyという会社名を持つウェブサービスに問い合わせる。 ウェブサービスはアドレスブロックを返す。

要求


<?xml version="1.0"?>
   <Address>
      <getAddress>
         <name>Samples Outdoor Company</name>
      </getAddress>
   <Address>

応答


<xml version="1.0"?>
 <Address>
 <getAddressResponse>
         <number>50</number>
         <street>Washington</street>
         <city>Westborough</city>
         <state>MA</state>
         <zip>01581</zip>
      </getAddressResponse>
</Address>

SOAPフレームワークの使用

ワールド・ワイド・ウェブ・コンソーシアム( W3C )によって発行されたSOAP仕様には、以下の項目が記述されている:

  • リクエスト、レスポンス、その他の情報を含むSOAPメッセージの構造。
  • 文字列や整数などの単純なデータ型から、クラスや構造体などの複雑なデータ型まで、データ型をXMLとしてエンコードするためのルール。 SOAPメッセージでは、 encodingStyle 属性は符号化規則を提供するURIを特定します。
  • 要求元アプリケーションとWebサービスからリモートプロシージャコール(RPC)を呼び出すための規約。 は、 Web サービスとの RPC スタイルおよび文書スタイルの通信をサポートします。 Web Service stage
  • HTTP、SMTPなどのトランスポートプロトコルへのSOAPのバインディング。
SOAPメッセージは次のような構造をしている:
SOAPメッセージは、エンベロープ、ヘッダー、ボディから構成される。

SOAPエンベロープは、下位要素をSOAPメッセージとして識別し、名前空間宣言を提供するラッパー要素である。 名前空間は、SOAPボディ内の要素にセマンティックなコンテキストを提供する。

SOAPヘッダーは、認証情報、ローカライゼーションサポート、配送ルート などのメタデータを含むことができるオプションのエレメントである。

SOAPボディにはメッセージのペイロードが含まれ、ウェブ・サービス・リクエストまたはウェブ・サービス・レスポンスとなります。 応答は処理エラーになることがあり、これはSOAPフォルトと呼ばれる。

SOAPメッセージに組み込まれるリクエスト

以下は、SOAPメッセージに組み込まれたリクエストのサンプルである。 <SOAP-ENV:Body> などの主要な要素が強調されている。

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:auth="http://schemas.xmlsoap.org/ws/2002/04/secext"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
   <auth:Security>
      <auth:UsernameToken>
         <auth:Username>Smith</auth:Username>
         <auth:Password>XMLER</auth:Password>
      </auth:UsernameToken>
   </auth:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
   <ns:getAddress xmlns:ns="PhoneNumber">
      <name xsi:type="xsd:string"> Samples Outdoor Company </name>
   </ns:getAddress>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>