Lianja
Lianja
Simple SOAP Request
See more HTTP Examples
Demonstrates how to send a simple SOAP request.Chilkat Lianja Downloads
llSuccess = .F.
// --------------------------------------------------------------------------------
// Also see Chilkat's Online WSDL Code Generator
// to generate code and SOAP Request and Response XML for each operation in a WSDL.
// --------------------------------------------------------------------------------
// Create the following XML to be sent in the SOAP request body.
// <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
// <soapenv:Header/>
// <soapenv:Body>
// <dat:NumberToDollars>
// <dat:dNum>99.0</dat:dNum>
// </dat:NumberToDollars>
// </soapenv:Body>
// </soapenv:Envelope>
loXml = createobject("CkXml")
loXml.Tag = "soapenv:Envelope"
loXml.AddAttribute("xmlns:dat","http://www.dataaccess.com/webservicesserver/")
loXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
loXml.UpdateChildContent("soapenv:Header","")
loXml.UpdateChildContent("soapenv:Body|dat:NumberToDollars|dat:dNum","99.0")
// In a SOAP HTTP request, including the XML declaration (<?xml version="1.0" encoding="UTF-8"?>) in the XML body is generally not required.
loXml.EmitXmlDecl = .F.
lcSoapRequestBody = loXml.GetXml()
lcEndpoint = "https://www.dataaccess.com/webservicesserver/numberconversion.wso"
lcSoapAction = ""
// For SOAP requests, the standard Content-Type is usually set to "text/xml" or "application/soap+xml"
lcContentType = "text/xml"
loHttp = createobject("CkHttp")
loHttp.ClearHeaders()
loHttp.SetRequestHeader("SOAPAction",lcSoapAction)
loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpStr("POST",lcEndpoint,lcSoapRequestBody,"utf-8",lcContentType,loResp)
if (llSuccess = .F.) then
? loHttp.LastErrorText
release loXml
release loHttp
release loResp
return
endif
// Get the XML response body.
loResponseXml = createobject("CkXml")
loResp.GetBodyXml(loResponseXml)
lnStatusCode = loResp.StatusCode
? "response status code: " + str(lnStatusCode)
// If the status code does not indicate succcess, then show the response XML,
// which probably contains error information.
if (lnStatusCode <> 200) then
? loResponseXml.GetXml()
release loXml
release loHttp
release loResp
release loResponseXml
return
endif
? loResponseXml.GetXml()
// Parse the successful SOAP response XML.
// This is a sample of the response XML, but the namespace prefixes will be different.
// We can parse the result using "*" for the namespace prefixes (see below).
// <soapenv:Envelope xmlns:dat="http://www.dataaccess.com/webservicesserver/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
// <soapenv:Header/>
// <soapenv:Body>
// <dat:NumberToDollarsResponse>
// <dat:NumberToDollarsResult>string</dat:NumberToDollarsResult>
// </dat:NumberToDollarsResponse>
// </soapenv:Body>
// </soapenv:Envelope>
lcDat_NumberToDollarsResult = loResponseXml.GetChildContent("*:Body|*:NumberToDollarsResponse|*:NumberToDollarsResult")
? "result: " + lcDat_NumberToDollarsResult
release loXml
release loHttp
release loResp
release loResponseXml