SQL Server
SQL Server
HTTP SOAP 1.2 Request and Response using POST
See more HTTP Examples
Demonstrates a working SOAP 1.2 request and response using POST with a live server. You may try running this example with the URLs and data provided. See http://wsf.cdyne.com/WeatherWS/Weather.asmx?op=GetCityWeatherByZIP for details.Note: This example is correct in theory, but no longer works for live testing because the SOAP service provider (cdyne.com) has made changes or discontinued the free service.
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- --------------------------------------------------------------------------------
-- Also see Chilkat's Online WSDL Code Generator
-- to generate code and SOAP Request and Response XML for each operation in a WSDL.
-- --------------------------------------------------------------------------------
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @soapXml int
EXEC @hr = sp_OACreate 'Chilkat.Xml', @soapXml OUT
EXEC sp_OASetProperty @soapXml, 'Tag', 'soap12:Envelope'
EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'
EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'
EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns:soap12', 'http://www.w3.org/2003/05/soap-envelope'
EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'soap12:Body', ''
EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0
EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'GetCityWeatherByZIP', ''
EXEC sp_OAMethod @soapXml, 'GetChild2', @success OUT, 0
EXEC sp_OAMethod @soapXml, 'AddAttribute', @success OUT, 'xmlns', 'http://ws.cdyne.com/WeatherWS/'
EXEC sp_OAMethod @soapXml, 'NewChild2', NULL, 'ZIP', '60187'
EXEC sp_OAMethod @soapXml, 'GetRoot2', NULL
EXEC sp_OAMethod @soapXml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
DECLARE @req int
EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT
EXEC sp_OASetProperty @req, 'HttpVerb', 'POST'
EXEC sp_OASetProperty @req, 'SendCharset', 0
EXEC sp_OAMethod @req, 'AddHeader', NULL, 'Content-Type', 'application/soap+xml; charset=utf-8'
EXEC sp_OAMethod @req, 'AddHeader', NULL, 'SOAPAction', 'http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP'
EXEC sp_OASetProperty @req, 'Path', '/WeatherWS/Weather.asmx'
EXEC sp_OAMethod @soapXml, 'GetXml', @sTmp0 OUT
EXEC sp_OAMethod @req, 'LoadBodyFromString', @success OUT, @sTmp0, 'utf-8'
EXEC sp_OASetProperty @http, 'FollowRedirects', 1
DECLARE @resp int
EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OAMethod @http, 'HttpSReq', @success OUT, 'wsf.cdyne.com', 80, 0, @req, @resp
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @soapXml
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
RETURN
END
DECLARE @xmlResponse int
EXEC @hr = sp_OACreate 'Chilkat.Xml', @xmlResponse OUT
EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT
EXEC sp_OAMethod @xmlResponse, 'LoadXml', @success OUT, @sTmp0
EXEC sp_OAMethod @xmlResponse, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @soapXml
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @xmlResponse
END
GO