Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » HTTP Web サービス » Web クライアントを使用した Web サービスへのアクセス » Web クライアントアプリケーションの開発 » Web クライアント関数とプロシージャーの要件と推奨事項

 

SOAP ネームスペース URI の要件

ネームスペース URI では、指定された SOAP 操作の SOAP 要求エンベロープを作成するために使用される XML ネームスペースを指定します。ネームスペース URI が定義されていない場合は、URL 句のドメインコンポーネントが使用されます。

サーバー側の SOAP プロセッサーはこの URI を使用して、要求のメッセージ本文内にあるさまざまなエンティティの名前を解釈します。CREATE PROCEDURE 文と CREATE FUNCTION 文の NAMESPACE 句では、ネームスペース URI を指定します。

ネームスペース URI を指定しないと、プロシージャーコールが成功しない可能性があります。通常、この情報は一般の Web サーバーのマニュアルに示されていますが、必要なネームスペース URI は、Web サーバーから使用できる WSDL から取得できます。SQL Anywhere Web サーバーと通信しようとしている場合は、DISH サービスにアクセスして、WSDL を生成できます。

通常、NAMESPACE は、wsdl:definition 要素内の WSDL ドキュメントの最初で指定された targetNamespace 属性からコピーできます。後続の '/' は重要であるため、これらを含める場合は注意してください。次に、指定された SOAP 操作の soapAction 属性を確認します。この属性は、後述するように生成される SOAPAction HTTP ヘッダーに対応している必要があります。

NAMESPACE 句は 2 つの役割を果たします。NAMESPACE 句は、SOAP エンベロープの本文のネームスペースを指定し、プロシージャーに TYPE 'SOAP:DOC' が指定されている場合は、SOAPAction HTTP ヘッダーのドメインコンポーネントとして使用されます。

次の例は、NAMESPACE 句の使用方法を示します。

CREATE FUNCTION an_operation(a_parameter LONG VARCHAR)
    RETURNS LONG VARCHAR
    URL 'http://wsdl.domain.com/fictitious.asmx'
    TYPE 'SOAP:DOC'
    NAMESPACE 'http://wsdl.domain.com/'

Interactive SQL で次の SQL 文を実行します。

SELECT an_operation('a_value');

この文では、次の出力のような SOAP 要求が生成されます。



POST /fictitious.asmx HTTP/1.0
SOAPAction: "http://wsdl.domain.com/an_operation"
Host: wsdl.domain.com
Content-Type: text/xml
Content-Length: 387
Connection: close

<?xml version="1.0"?>
<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:m="http://wsdl.domain.com/">
  <SOAP-ENV:Body>
   <m:an_operation>
    <m:a_parameter>a_value</m:a_parameter>
   </m:an_operation>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

プレフィクス 'm' のネームスペースが http://wsdl.domain.com/ に設定され、SOAPAction HTTP ヘッダーによって、SOAP 操作の完全に修飾された URL が指定されます。

後続のスラッシュは SQL Anywhere が正しく動作するための必要条件ではありませんが、診断が難しい応答障害の原因となる可能性があります。SOAPAction HTTP ヘッダーは、後続のスラッシュに関係なく、正しく生成されます。

NAMESPACE が指定されていない場合、URL 句のドメインコンポーネントが SOAP 本文のネームスペースとして使用され、プロシージャーが TYPE 'SOAP:DOC' の場合は、HTTP SOAPAction HTTP ヘッダーの生成に使用されます。上記の例で NAMESPACE 句が省略された場合は、http://wsdl.domain.com がネームスペースとして使用されます。後続のスラッシュ '/' がないことが、わずかに異なります。SOAPAction HTTP ヘッダーを含め、SOAP 要求のそれ以外のすべての点は、上記の例と同じです。

上記の SOAP:DOC で説明したように、NAMESPACE 句は SOAP 本文のネームスペースを指定するときに使用します。ただし、SOAPAction HTTP ヘッダーは、空の値 SOAPAction: "" で生成されます。

SOAP:DOC 要求タイプを使用する場合は、SOAPAction HTTP ヘッダーを作成するためにネームスペースも使用されます。

 参照