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 エンベロープでの変数の指定

Web クライアント関数またはプロシージャーの SET SOAP オプションを使用して SOAP エンベロープで変数を指定し、SOAP 操作を設定できます。

次のコードは、Web クライアント関数で SOAP 操作を設定する方法を示しています。

CREATE FUNCTION soapAddItemFunc(amount INT, item LONG VARCHAR) 
    RETURNS XML
    URL 'http://localhost:8082/itemStore'
    SET 'SOAP(OP=addItems)'
    TYPE 'SOAP:DOC';

この例では、addItems は、soapAddItemFunc 関数にパラメーターとして渡される amount 値と item 値を含む SOAP 操作です。

次のサンプルスクリプトを実行して要求を送信できます。

SELECT soapAddItemFunc(5, 'shirt');

soapAddItemFunc ファンクションコールの呼び出しによって、次のような SOAP エンベロープが生成されます。



<?xml version="1.0"?>
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:m="http://localhost:8082">
  <SOAP-ENV:Body>
    <m:addItems>
      <m:amount>5</m:amount>
      <m:item>shirt</m:item>
    </m:addItems>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

前の方法の代わりに、独自の SOAP ペイロードを作成し、HTTP ラッパーでサーバーに送信できます。

SOAP サービスに対する変数は、標準 SOAP 要求の一部として含める必要があります。これ以外の方法で提供される値は無視されます。

次のコードは、カスタマイズされた SOAP エンベロープを構築する HTTP ラッパープロシージャーを作成する方法を示しています。



CREATE PROCEDURE addItemHttpWrapper(amount INT, item LONG VARCHAR)
RESULT(response XML)
BEGIN
    DECLARE payload XML;
    DECLARE response XML;

    SET payload =
'<?xml version="1.0"?>
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:m="http://localhost:8082">
  <SOAP-ENV:Body>
    <m:addItems>
      <m:amount>' || amount || '</m:amount>
      <m:item>' || item || '</m:item>
    </m:addItems>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>';

    SET response = httpAddItemFunc( payload );
    /* process response as demonstrated in addItemFuncWrapper */
    SELECT response;
END;

次のコードは、要求の送信に使用する Web クライアント関数を示しています。

CREATE FUNCTION httpAddItemFunc(soapPayload XML)
    RETURNS XML
    URL 'http://localhost:8082/itemStore'
    TYPE 'HTTP:POST:text/xml'
    HEADER 'SOAPAction: "http://localhost:8082/addItems"';

次のサンプルスクリプトを実行して要求を送信できます。

CALL addItemHttpWrapper( 7, 'socks' );