Share this Page URL
Help

Chapter 4. Get Data from the Web > Call a Web Service Asynchronously - Pg. 143

To learn about DOMDocument IXMLDOMNodeList Look here msdn.microsoft.com/library/en-us/xmlsdk/htm/xml_obj_over view_20ab.asp msdn.microsoft.com/library/en-us/xmlsdk30/htm/xmobjxml domnodelist.asp 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 pro- vides 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: 1. 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 DOMDocument 2. Select 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 ) 3. In other code, initialize the xdoc object, set its async property to True, and then call the web service using the xdoc object's Load method. For example, the fol- lowing 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 DOMDocument xdoc.async = True Call a Web Service Asynchronously | 143