Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Making SOAP Requests using the REST APIThere's no reason a SOAP request cannot be sent using the REST API. It's only a matter of adding a SOAP specific header, and providing the SOAP XML request body. The response body is the SOAP response XML. This example sends a request to ws.cdyne.com to get city weather by zip code.
Use ChilkatAx-win32.pkg Procedure Test Handle hoRest Boolean iBTls Integer iPort Boolean iBAutoReconnect Boolean iSuccess Handle hoSoapXml String sResponseXml Handle hoXml String sTemp1 Integer iTemp1 Boolean bTemp1 // Demonstrates how to do a SOAP request using the REST API. // 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. // -------------------------------------------------------------------------------- Get Create (RefClass(cComChilkatRest)) To hoRest If (Not(IsComObjectCreated(hoRest))) Begin Send CreateComObject of hoRest End // This is the request to be sent: // POST /WeatherWS/Weather.asmx HTTP/1.1 // Host: wsf.cdyne.com // Content-Type: text/xml; charset=utf-8 // Content-Length: length // SOAPAction: "http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP" // // <?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> // <GetCityWeatherByZIP xmlns="http://ws.cdyne.com/WeatherWS/"> // <ZIP>string</ZIP> // </GetCityWeatherByZIP> // </soap:Body> // </soap:Envelope> // Note: The application does not need to set the Host or Content-Length headers. // Chilkat will automatically add these headers. // Make the initial connection (without sending a request yet). Move False To iBTls Move 80 To iPort Move True To iBAutoReconnect // In this particular case, it is important to connect to "wsf.cdyne.com", not "ws.cdyne.com"... Get ComConnect Of hoRest "wsf.cdyne.com" iPort iBTls iBAutoReconnect To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoRest To sTemp1 Showln sTemp1 Procedure_Return End // Add request headers: Get ComAddHeader Of hoRest "Content-Type" "text/xml; charset=utf-8" To iSuccess Get ComAddHeader Of hoRest "SOAPAction" "http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP" To iSuccess // Build the SOAP XML request body. Get Create (RefClass(cComChilkatXml)) To hoSoapXml If (Not(IsComObjectCreated(hoSoapXml))) Begin Send CreateComObject of hoSoapXml End Set ComTag Of hoSoapXml To "soap:Envelope" Get ComAddAttribute Of hoSoapXml "xmlns:xsi" "http://www.w3.org/2001/XMLSchema-instance" To iSuccess Get ComAddAttribute Of hoSoapXml "xmlns:xsd" "http://www.w3.org/2001/XMLSchema" To iSuccess Get ComAddAttribute Of hoSoapXml "xmlns:soap" "http://schemas.xmlsoap.org/soap/envelope/" To iSuccess Send ComNewChild2 To hoSoapXml "soap:Body" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Send ComNewChild2 To hoSoapXml "GetCityWeatherByZIP" "" Get ComGetChild2 Of hoSoapXml 0 To iSuccess Get ComAddAttribute Of hoSoapXml "xmlns" "http://ws.cdyne.com/WeatherWS/" To iSuccess Send ComNewChild2 To hoSoapXml "ZIP" "60187" Send ComGetRoot2 To hoSoapXml Get ComGetXml Of hoSoapXml To sTemp1 Showln sTemp1 // Send the SOAP request Get ComGetXml Of hoSoapXml To sTemp1 Get ComFullRequestString Of hoRest "POST" "/WeatherWS/Weather.asmx" sTemp1 To sResponseXml Get ComLastMethodSuccess Of hoRest To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoRest To sTemp1 Showln sTemp1 Procedure_Return End // When successful, the response status code will equal 200. Get ComResponseStatusCode Of hoRest To iTemp1 If (iTemp1 <> 200) Begin // Examine the request/response to see what happened. Get ComResponseStatusCode Of hoRest To iTemp1 Showln "response status code = " iTemp1 Get ComResponseStatusText Of hoRest To sTemp1 Showln "response status text = " sTemp1 Get ComResponseHeader Of hoRest To sTemp1 Showln "response header: " sTemp1 Showln "response body (if any): " sResponseXml Showln "---" Get ComLastRequestStartLine Of hoRest To sTemp1 Showln "LastRequestStartLine: " sTemp1 Get ComLastRequestHeader Of hoRest To sTemp1 Showln "LastRequestHeader: " sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Get ComLoadXml Of hoXml sResponseXml To iSuccess // GetXml will emit XML that is nicely indented for human viewing.. Get ComGetXml Of hoXml To sTemp1 Showln sTemp1 // A sample response XML is shown below... // To get some information, use ChilkatPath. For example... Get ComChilkatPath Of hoXml "soap:Body|GetCityWeatherByZIPResponse|GetCityWeatherByZIPResult|Temperature|*" To sTemp1 Showln "Temperature: " sTemp1 Showln "Success." // <?xml version="1.0" encoding="utf-8" ?> // <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> // <soap:Body> // <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/"> // <GetCityWeatherByZIPResult> // <Success>true</Success> // <ResponseText>City Found</ResponseText> // <State>IL</State> // <City>Wheaton</City> // <WeatherStationCity>West Chicago</WeatherStationCity> // <WeatherID>10</WeatherID> // <Description>Mostly Sunny</Description> // <Temperature>33</Temperature> // <RelativeHumidity>39</RelativeHumidity> // <Wind>VRB5</Wind> // <Pressure>30.33F</Pressure> // <Visibility /> // <WindChill /> // <Remarks /> // </GetCityWeatherByZIPResult> // </GetCityWeatherByZIPResponse> // </soap:Body> // </soap:Envelope> End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.