You can supply variables in a SOAP envelope using the SET SOAP option of a web client function or procedure to set a SOAP operation.
The following code illustrates how to set a SOAP operation in a web client function:
CREATE OR REPLACE FUNCTION soapAddItemFunction("amount" int, item long varchar) RETURNS XML URL 'http://localhost/store' SET 'SOAP(OP=addItems)' TYPE 'SOAP:DOC'; |
In this example, the addItems is the SOAP operation that contains the amount and item values, which are passed as parameters to the soapAddItemFunction function.
You can send a request by running the following sample script:
SELECT soapAddItemFunction(5, 'shirt'); |
A call to the soapAddItemFunction function call generates a SOAP envelope that looks similar to the following:
'<?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"> <SOAP-ENV:Body> <m:addItems> <m:amount>5</m:amount> <m:item>shirt</m:item> </m:addItems> </SOAP-ENV:Body> </SOAP-ENV:Envelope>' |
As an alternative to the previous approach, you can create your own SOAP payload and send it to the server in an HTTP wrapper.
Variables to SOAP services must be included as part of a standard SOAP request. Values supplied using other methods are ignored.
The following code illustrates how to create an HTTP wrapper procedure that builds a customized SOAP envelope:
create or replace 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"> <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 = httpAddItemFunction( payload ); /* process response as demonstrated in addItemFunctionWrapper */ select response; end |
The following code illustrates the web client function used to send the request:
create or replace function httpAddItemFunction("soapPayload" xml ) returns XML url 'http://localhost/store' type 'HTTP:POST:text/xml' header 'SOAPAction: "http://localhost/addItems"'; |
You can send a request by running the following sample script:
call addItemHttpWrapper( 5, 'shirt' ); |
Discuss this page in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |