WSDL の Binding セグメントは、PortType
で定義されているオペレーションのリクエストとレスポンスが下位の伝送プロトコルで実際にどのように転送されるかを指定します。これは、WSDLの興味深い部分ですが、めったに変更されないため、あまり注意を払う必要はありません。
Binding の値には、HTTP GET、HTTP POST、SOAP が含まれます。SOAP は特定のトランスポートに結びつけられていません。SOAP リクエストは SMTP、FTP、HTTP で伝送することができます。しかし、最も一般的に使われるのは HTTP です。HTTP GET と HTTP POST の両方を使用できますが、多くのサーバでは HTTP GET リクエストに文字の制限があるため、HTTP POST が優先されます。
次の Product Advertising API の WSDL のコーディングの抜粋に示されるように、Product Advertising API は SOAP を使用します。
<binding name="AWSECommerceServiceBinding" type="tns:AWSECommerceServicePortType"> ... <operation name="ItemSearch"> <soap:operation soapAction="http://soap.amazon.com" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation>
この Binding は、Product Advertising API が2つの SOAP 拡張、soap:operation と soap:body を使用することを示しています。
soap:operation 要素は、Product Advertising API のオペレーション (この例では ItemSearch
)が、特定のSOAP実装にバインドされていることを示します。soapAction 属性は、SOAPAction HTTP ヘッダーが Product Advertising API のサービスを識別するために使われることを示しています。これは、soapActionのURI 値、http://soap.amazon.comです。soapAction により、Amazon の Web サーバは、SOAP ペイロードのメッセージ部分を調べなくても SOAP リクエストの意図を特定できます。この URI の指定は、Product Advertising API の Web サーバにアクセスする上で必須です。
soap:body 要素は、入出力の詳細を指定します。Product Advertising API WSL での値は "literal" です。これは、入出力を SOAP 構造としてエンコードしないで、XML ドキュメントをそのまま使うことを意味します。Product Advertising API のレスポンスが XML ドキュメントであることはこれまでに見てきたとおりです。