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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » HTTP-Webdienste » Zugriff auf Webdienste mithilfe von Webclients » Webclient-Anwendungsentwicklung » An Webdienste übergebene Variable

 

In SOAP-Rahmen übergebene Variable

Sie können Variablen in einem SOAP-Envelope übergeben, indem Sie einen SOAP-Vorgang mit der SET SOAP-Option einer Webclient-Funktion oder -Prozedur einrichten.

Der folgende Code veranschaulicht, wie Sie einen SOAP-Vorgang in einer Webclient-Funktion einrichten:

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

In diesem Beispiel enthält der addItems-Vorgang die amount- und item-Werte, die als Parameter an die soapAddItemFunc-Funktion übergeben werden.

Sie können eine Anforderung senden, indem Sie das folgende Beispielskript ausführen:

SELECT soapAddItemFunc(5, 'shirt');

Ein Aufruf des soapAddItemFunc-Funktionsaufrufs generiert einen SOAP-Envelope, der ähnlich wie der folgende aufgebaut ist:



<?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>

Als Alternative zur vorherigen Vorgehensweise können Sie eigene SOAP-Daten erstellen und in einem HTTP-Wrapper an den Server senden.

Variablen für SOAP-Dienste müssen in eine Standard-SOAP-Anforderung eingefügt werden. Auf andere Art angegebene Werte werden ignoriert.

Der folgende Code veranschaulicht die Erstellung einer HTTP-Wrapper-Prozedur, die einen angepassten SOAP-Envelope aufbaut:



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;

Der folgende Beispielcode veranschaulicht die Webclient-Funktion, die zum Senden der Anforderung verwendet wird:

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

Sie können eine Anforderung senden, indem Sie das folgende Beispielskript ausführen:

CALL addItemHttpWrapper( 7, 'socks' );