Chilkat HOME Android™ ASP Visual Basic VB.NET C# iOS (IPhone) Objective-C C++ C Unicode C++ Unicode C MFC Delphi DLL Delphi ActiveX FoxPro Java Perl PHP Extension PHP ActiveX Python PowerShell Ruby SQL Server VBScript
|
SOAP Web Service (HTTP POST)Demonstrates how to call PostXml to call a SOAP web service. LOCAL loHttp LOCAL lnSuccess LOCAL loXml LOCAL lcStrXml LOCAL loResp LOCAL lnResponseStatusCode LOCAL lcEndPoint LOCAL loXmlResp LOCAL lcUnwrappedXml LOCAL loXmlMeat loHttp = CreateObject('Chilkat.Http') * Any string unlocks the component for the 1st 30-days. lnSuccess = loHttp.UnlockComponent("Anything for 30-day trial") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loHttp.LastErrorText) QUIT ENDIF * This example uses a live web service at: * http://www.webservicex.net/uklocation.asmx * It gets the UK town,Postcode and County by Postcode(First Section of Post Code) * The SOAP XML will look like this: * <?xml version="1.0" encoding="utf-8"?> * <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> * <soap:Body> * <GetUKLocationByPostCode xmlns="http://www.webserviceX.NET"> * <PostCode>string</PostCode> * </GetUKLocationByPostCode> * </soap:Body> * </soap:Envelope> * For this example's sake, we'll load the XML from a file. We'll test using PostCode "E3". * The SOAP XML for this example may be downloaded from: * http://www.chilkatsoft.com/testData/ukPostCodeSoap.xml loXml = CreateObject('Chilkat.Xml') lnSuccess = loXml.LoadXmlFile("ukPostCodeSoap.xml") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loXml.LastErrorText) QUIT ENDIF lcStrXml = loXml.GetXml() * We'll need to add this in the HTTP header: * SOAPAction: "http://www.webserviceX.NET/GetUKLocationByPostCode" loHttp.SetRequestHeader("SOAPAction","http://www.webserviceX.NET/GetUKLocationByPostCode") * Some services expect the content-type in the HTTP header to be "application/xml" while * other expect text/xml. The default sent by Chilkat is "application/xml", but this web service * expects "text/xml". Therefore, change the content-type: loHttp.SetRequestHeader("Content-Type","text/xml; charset=utf-8") * The endpoint for this soap service is: lcEndPoint = "http://www.webservicex.net/uklocation.asmx" * Note: This particular web service was live and functioning at the time this example * was written. It is possible that as time progresses, this web service will no longer * be availble... loResp = loHttp.PostXml(lcEndPoint,lcStrXml,"utf-8") IF (loResp = NULL ) THEN ? loHttp.LastErrorText ? "LastHeader:" ? loHttp.LastHeader ELSE lnResponseStatusCode = loResp.StatusCode * You may wish to verify that the responseStatusCode equals 200... ? "Response Status Code: " + STR(lnResponseStatusCode) * You may examine the exact HTTP header sent with the POST like this: ? "LastHeader:" ? loHttp.LastHeader * Examine the XML returned by the web service: ? "XML Response:" loXmlResp = CreateObject('Chilkat.Xml') lnSuccess = loXmlResp.LoadXml(loResp.BodyStr) * Assume the LoadXml is successful... * Get rid of the SOAP wrappings and get to the meat of this particular response. * The TagContent method returns the content of the 1st node in the XML document * having a specific tag: lcUnwrappedXml = loXmlResp.TagContent("GetUKLocationByPostCodeResult") ? lcUnwrappedXml * The unwrapped XML could be loaded into an XML object and parsed... loXmlMeat = CreateObject('Chilkat.Xml') lnSuccess = loXmlMeat.LoadXml(lcUnwrappedXml) * ... ENDIF |
© 2000-2013 Chilkat Software, Inc. All Rights Reserved.