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
(PowerShell) 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.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # 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. # -------------------------------------------------------------------------------- $rest = New-Object Chilkat.Rest # 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). $bTls = $false $port = 80 $bAutoReconnect = $true # In this particular case, it is important to connect to "wsf.cdyne.com", not "ws.cdyne.com"... $success = $rest.Connect("wsf.cdyne.com",$port,$bTls,$bAutoReconnect) if ($success -ne $true) { $($rest.LastErrorText) exit } # Add request headers: $success = $rest.AddHeader("Content-Type","text/xml; charset=utf-8") $success = $rest.AddHeader("SOAPAction","http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP") # Build the SOAP XML request body. $soapXml = New-Object Chilkat.Xml $soapXml.Tag = "soap:Envelope" $success = $soapXml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance") $success = $soapXml.AddAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema") $success = $soapXml.AddAttribute("xmlns:soap","http://schemas.xmlsoap.org/soap/envelope/") $soapXml.NewChild2("soap:Body","") $success = $soapXml.GetChild2(0) $soapXml.NewChild2("GetCityWeatherByZIP","") $success = $soapXml.GetChild2(0) $success = $soapXml.AddAttribute("xmlns","http://ws.cdyne.com/WeatherWS/") $soapXml.NewChild2("ZIP","60187") $soapXml.GetRoot2() $($soapXml.GetXml()) # Send the SOAP request $responseXml = $rest.FullRequestString("POST","/WeatherWS/Weather.asmx",$soapXml.GetXml()) if ($rest.LastMethodSuccess -ne $true) { $($rest.LastErrorText) exit } # When successful, the response status code will equal 200. if ($rest.ResponseStatusCode -ne 200) { # Examine the request/response to see what happened. $("response status code = " + $rest.ResponseStatusCode) $("response status text = " + $rest.ResponseStatusText) $("response header: " + $rest.ResponseHeader) $("response body (if any): " + $responseXml) $("---") $("LastRequestStartLine: " + $rest.LastRequestStartLine) $("LastRequestHeader: " + $rest.LastRequestHeader) exit } $xml = New-Object Chilkat.Xml $success = $xml.LoadXml($responseXml) # GetXml will emit XML that is nicely indented for human viewing.. $($xml.GetXml()) # A sample response XML is shown below... # To get some information, use ChilkatPath. For example... $("Temperature: " + $xml.ChilkatPath("soap:Body|GetCityWeatherByZIPResponse|GetCityWeatherByZIPResult|Temperature|*")) $("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> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.