This Visual Basic code example consists primarily of two subroutines: MakeRequest
and ProcessRepsonse
.
In MakeRequest
, we construct a request URL based on user input, connect to the specified server, and issue the request. If the request is synchronous, we then call ProcessReponse
. Otherwise, we exit the routine and the onreadystatechange
event handler calls ProcessResponse
when the response becomes available. In the ProcessResponse
routine, we extract the requested information from the server and display it in a text box on the form.
Visual Basic Source File (XMLOverHTTP.frm)
Public oHttpReq As XMLHTTP50 Public oXMLDoc As DOMDocument50 Private Sub Command1_Click() MakeRequest (True) End Sub Private Sub MakeRequest(ByVal isAsync As Boolean) Set oHttpReq = New XMLHTTP50 Dim xhrHandler As myHttpRequestHandlers If isAsync = True Then Set xhrHandler = New myHttpRequestHandlers ' Set a readyStateChange handler. oHttpReq.OnReadyStateChange = xhrHandler End If ' Construct the URL from user input. url = Text1.Text If Text2.Text <> "" Then url = url + "?SearchID=" + Text2.Text End If ' Clear the display. Text3.Text = "" ' Open a connection and set up a request to the server. oHttpReq.open "GET", url, isAsync ' Send the request to the server. oHttpReq.send ' In a synchronous call, we must call ProcessResponse. In an ' asynchronous call, the OnReadyStateChange handler calls ' ProcessResponse. If isAsync = False Then ProcessResponse End If End Sub Public Sub ProcessResponse() ' Receive the response from the server. Set oXMLDoc = oHttpReq.responseXML ' Display the server response to the user. Set oNode = oXMLDoc.selectSingleNode("//phone") If oNode Is Nothing Then Text3.Text = "Requested information not found." Else Text3.Text = oNode.Text End If End Sub Private Sub Form_Load() Text3.Text = "" Text1.Text = "http://localhost/sxh/contact.asp" Text2.Text = "John Doe" End Sub
To add XMLOverHTTP.frm to the project and set the controls
Next, we'll add a class module as the handler to the onreadystatechange
event of the IXMLHTTPRequest
object.