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' ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |