Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3/4 Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(VB.NET) Asynchronous HTTP SOAP 1.2 Request and Response using POST
Demonstrates a working asynchronous 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.
' TaskCompleted callback method. Private Sub http_OnTaskCompleted(sender As Object, args As Chilkat.TaskCompletedEventArgs) Handles http.OnTaskCompleted Dim completedTask As Chilkat.Task = args.Task; ' A finished task could be one that was canceled, aborted, or truly finished. ' If the task was "canceled", it was canceled prior to actually starting. This could ' happen if the task was canceled while waiting in a thread pool queue to be scheduled by Chilkat's ' background thread pool scheduler. ' If the task was "aborted", it indicates that it was canceled while running in a background thread. ' The ResultErrorText will likely indicate that the task was aborted. ' If the task "completed", then it ran to completion, but the actual success/failure of the method ' is determined by the result obtained via a GetResult* method. (A "completed" task will ' have a StatusInt equal to 7. If the task finished, but was not completed, then it must've ' been aborted or canceled: If (completedTask.StatusInt <> 7) Then Debug.WriteLine("Task did not complete.") Debug.WriteLine("task status: " & completedTask.Status) Exit Sub End If ' The synchronous call to QuickGetObj would return an HTTP response object. To get this ' response object for the async call, we instantiate a new/empty HTTP response object, ' and then load it from the completed task. Dim resp As New Chilkat.HttpResponse Dim success As Boolean = resp.LoadTaskResult(completedTask) If (success <> True) Then Debug.WriteLine(resp.LastErrorText) Exit Sub End If ' Now that we have the response, we can get all of the information: Debug.WriteLine("status code: " & resp.StatusCode) Debug.WriteLine("response header: " & resp.Header) Dim xmlResponse As New Chilkat.Xml xmlResponse.LoadXml(resp.BodyStr) Debug.WriteLine(xmlResponse.GetXml()) End Sub private Sub ChilkatExample() ' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim WithEvents http As New Chilkat.Http Dim success As Boolean Dim soapXml As New Chilkat.Xml soapXml.Tag = "soap12:Envelope" soapXml.AddAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance") soapXml.AddAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema") soapXml.AddAttribute("xmlns:soap12","http://www.w3.org/2003/05/soap-envelope") soapXml.NewChild2("soap12:Body","") soapXml.GetChild2(0) soapXml.NewChild2("GetCityWeatherByZIP","") soapXml.GetChild2(0) soapXml.AddAttribute("xmlns","http://ws.cdyne.com/WeatherWS/") soapXml.NewChild2("ZIP","60187") soapXml.GetRoot2() Debug.WriteLine(soapXml.GetXml()) Dim req As New Chilkat.HttpRequest req.HttpVerb = "POST" req.SendCharset = False req.AddHeader("Content-Type","application/soap+xml; charset=utf-8") req.AddHeader("SOAPAction","http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP") req.Path = "/WeatherWS/Weather.asmx" req.LoadBodyFromString(soapXml.GetXml(),"utf-8") http.FollowRedirects = True Dim task As Chilkat.Task = http.SynchronousRequestAsync("wsf.cdyne.com",80,False,req) If (http.LastMethodSuccess <> True) Then Debug.WriteLine(http.LastErrorText) Exit Sub End If ' Schedule the task for running on the thread pool. This changes the task's state ' from Inert to Live. success = task.Run() If (success <> True) Then Debug.WriteLine(task.LastErrorText) Exit Sub End If ' The application is now free to do anything else ' while the HTTP request is in progress. When the task ' is completed, the TaskCompleted method is called. ' ------------------------------------------------------------------------------- ' The following is a general note that applies to all programming languages: ' ------------------------------------------------------------------------------- ' NOTE: This is very important: The TaskCompleted callback runs in the background thread. ' (All callbacks from an async task, such as AbortCheck, PercentDone, ProgressInfo, etc. are in the background thread.) ' An application that uses TaskCompleted must be very careful. ' For example, user interface elements (such as labels, text boxes, etc.) may not be directly ' accessible from a background thread, and could crash the application if directly accessed. Also, attempting to debug ' code running in a background thread from an IDE, especially an older IDE (such as VB6) is likely to crash the IDE. End Sub
© 2000-2020 Chilkat Software, Inc. All Rights Reserved.