リクエストとレスポンスのエンコード ( 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-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>