Webservices mit VBA ansprechen

Heute morgen habe ich für einen Kunden ein kurzes Infodokument zusammengestellt, um zu zeigen, wie man Webservices über GET oder POST in VBA anspricht. Ohne viel zu erklären, die zwei kurzen Codeschnipsel. Der erste Request holt sich über POST zu einem ISO2-Country-Code ein paar Infos als XML-Dokument, der zweite fragt Google per GET nach dem Begriff „test“ und liefert das Ergebnis als json zurück.

' Democode für Webservice-Aufrufe über GET und POST
'
' 3.11.2012 - Waidner IT Solutions
 
Option Explicit
 
Sub XMLHttpTest()
    Dim XMLHttp As Object
    Dim strURL As String, strMethod As String, strUser As String
    Dim strPassword As String
    Dim bolAsync As Boolean
    Dim varMessage
 
    ' Microsoft XML HTTP Objekt erzeugen
    Set XMLHttp = CreateObject("MSXML2.XMLHTTP")
 
    ' -------------- POST-Request, der xml liefert -------------
 
    ' Parameter für einen simplen POST-Request ohne Authentifizierung füllen
    strMethod = "POST"
    strURL = "http://www.webservicex.net/country.asmx/GetCountryByCountryCode"
    bolAsync = False
    strUser = ""
    strPassword = ""
    varMessage = "CountryCode=DE"
 
    MsgBox "POST-Request, der XML liefert"
 
    ' Request absetzen
    Call XMLHttp.Open(strMethod, strURL, bolAsync, strUser, strPassword)
    Call XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    Call XMLHttp.send(varMessage)
 
    ' Rückgabewerte ausgeben
    MsgBox "Status: " & XMLHttp.Status
    MsgBox "responseText: " & XMLHttp.responseText
    MsgBox "reponseXML: " & XMLHttp.responseXML.Text
 
    ' ---------------- GET-Request, der json liefert ----------------
 
    ' Parameter für einen simplen GET-Request ohne Authentifizierung füllen
    strMethod = "GET"
    strURL = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=test"
    bolAsync = False
    strUser = ""
    strPassword = ""
    varMessage = ""
 
    MsgBox "GET-Request, der JSON liefert"
 
    ' Request absetzen
    Call XMLHttp.Open(strMethod, strURL, bolAsync, strUser, strPassword)
    Call XMLHttp.send(varMessage)
 
    ' Rückgabewerte ausgeben
    MsgBox "Status: " & XMLHttp.Status
    MsgBox "responseText: " & XMLHttp.responseText
    MsgBox "reponseXML: " & XMLHttp.responseXML.Text
End Sub
Waidner IT Solutions