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.
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 thewsAmazon
worksheet class:Dim WithEvents xdoc As DOMDocument
Select the
xdoc
object from the object list at the top of the code window, and then selectondataavailable
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 itsasync
property to True, and then call the web service using thexdoc
object’sLoad
method. 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 its options Set xdoc = New ...
Get Programming Excel with VBA and .NET now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.