WebServices mit VBA Bordmitteln nutzen
Grüßt euch,
ich habe ein Projekt auf den Tisch gekriegt mit Access-Frontend(VBA) einen Webservice anzusprechen.
Mit Webservices selber habe ich mich noch gar nicht beschäftigt, bevor ich da aber Zeit investiere müsste
ich erst mal in Erfahrung bringen ob das mit VBA Bordmitteln überhaupt geht.
Die meisten google-Einträge führen mich zu VisualStudio und .NET oder C#Klassen die eingebunden werden müssen
um dann mit Hilfe eines WCF-Clients diese Webservices anzusprechen.
Nur einen Code-Schnipsel in Sachen VBA habe ich im Netz gefunden:
sub ws()
Dim objRequest As Object
Dim strUrl As String
Dim blnAsync As Boolean
Dim strResponse As String
Set objRequest = CreateObject("MSXML2.XMLHTTP")
strUrl = "https://hosting.server.de/virtuell/modul/REST-API/irgendeinwebservice"
blnAsync = True
With objRequest
.Open "GET", strUrl, blnAsync
.SetRequestHeader "Content-Type", "application/json"
.Send
While objRequest.ReadyState <> 4
DoEvents
Wend
strResponse = .ResponseText
End With
MsgBox strResponse
end sub
Bin ich da auf das richtige gestoßen, also das ich am Ende den Inhalt von strResponse nach dem "durch parse"
was ich aus dem Webservice abrufen wollte und mit SetRequestHeader das an Parametern hochlade was der webservice für die
Ausführung eines bestimmten Befehls benötigt ?
Oder liege ich hier völlig falsch ?
Danke für Tipps.
ich habe ein Projekt auf den Tisch gekriegt mit Access-Frontend(VBA) einen Webservice anzusprechen.
Mit Webservices selber habe ich mich noch gar nicht beschäftigt, bevor ich da aber Zeit investiere müsste
ich erst mal in Erfahrung bringen ob das mit VBA Bordmitteln überhaupt geht.
Die meisten google-Einträge führen mich zu VisualStudio und .NET oder C#Klassen die eingebunden werden müssen
um dann mit Hilfe eines WCF-Clients diese Webservices anzusprechen.
Nur einen Code-Schnipsel in Sachen VBA habe ich im Netz gefunden:
sub ws()
Dim objRequest As Object
Dim strUrl As String
Dim blnAsync As Boolean
Dim strResponse As String
Set objRequest = CreateObject("MSXML2.XMLHTTP")
strUrl = "https://hosting.server.de/virtuell/modul/REST-API/irgendeinwebservice"
blnAsync = True
With objRequest
.Open "GET", strUrl, blnAsync
.SetRequestHeader "Content-Type", "application/json"
.Send
While objRequest.ReadyState <> 4
DoEvents
Wend
strResponse = .ResponseText
End With
MsgBox strResponse
end sub
Bin ich da auf das richtige gestoßen, also das ich am Ende den Inhalt von strResponse nach dem "durch parse"
was ich aus dem Webservice abrufen wollte und mit SetRequestHeader das an Parametern hochlade was der webservice für die
Ausführung eines bestimmten Befehls benötigt ?
Oder liege ich hier völlig falsch ?
Danke für Tipps.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 451731
Url: https://administrator.de/contentid/451731
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
2 Kommentare
Neuester Kommentar
Moin.
Ja. Eine Webservice-Anfrage ist ja nichts anderes als ein einfacher POST oder GET Webrequest.
Was dein Webservice an Daten erwartet kann vielfältig sein normalweise geschieht das über SOAP-Messages, siehe das Beispiel hier:
http://www.herber.de/forum/archiv/1476to1480/1478245_VBA__Webservices_S ...
Würde bei sowas würde ich persönlich gleich zu Powershell greifen, da ist das ein Einzeiler, ist aber Geschmackssache.
Gruß wireguard
Ja. Eine Webservice-Anfrage ist ja nichts anderes als ein einfacher POST oder GET Webrequest.
Bin ich da auf das richtige gestoßen, also das ich am Ende den Inhalt von strResponse nach dem "durch parse"
Joa. Überlichweise indem man die Response anschließend in ein XML-Object lädt das man vernünftig benutzen kann ohne mit Regex hantieren zu müssen.was ich aus dem Webservice abrufen wollte und mit SetRequestHeader das an Parametern hochlade was der webservice für die
Damit lädst du in dem Sinne eigentlich nichts hoch sondern passt hiermit den Request Header an der in der Anfrage an den Webserver gesendet wird. Die eigentliche Anfrage wird als Parameter an die .Send
Methode übergeben.Was dein Webservice an Daten erwartet kann vielfältig sein normalweise geschieht das über SOAP-Messages, siehe das Beispiel hier:
http://www.herber.de/forum/archiv/1476to1480/1478245_VBA__Webservices_S ...
Würde bei sowas würde ich persönlich gleich zu Powershell greifen, da ist das ein Einzeiler, ist aber Geschmackssache.
Gruß wireguard