Call a Web Service Asynchronously
One advantage of calling a web service directly, rather than through proxies, is that it is very easy to handle the response asynchronously. The DOMDocument object provides an ondataavailable event that occurs when the object is finished loading XML from a source. This means that you can launch a web service request, release control to the user, and display results when a request is complete. Being able to handle a response asynchronously is especially important when the web service is returning a large amount of data.
How to do it
To use the DOMDocument object to respond to a web service asynchronously, follow these steps:
Declare a DOMDocument object at the module of a class. The class can be a workbook, worksheet, or code class module. For example, the following variable is declared in the wsAmazon worksheet class:
Dim WithEvents xdoc As DOMDocumentSelect the xdoc object from the object list at the top of the code window, and then select ondataavailable from the event list to create an empty event procedure as shown here:
Private Sub xdoc_ondataavailable( ) End Sub
In other code, initialize the xdoc object, set its
asyncproperty to True, and then call the web service using the xdoc object’sLoadmethod. For example, the following event procedure searches Amazon.com for a keyword when the user clicks the Get Titles button on the wsAmazon worksheet:Sub cmdTitles_Click( ) Dim SearchUrl As String ' Create a new DOMDocument and set ...