Frage
Gibt es eine Möglichkeit, eine HTTP -GET -Anforderung innerhalb eines visuellen Basisskripts durchzuführen? Ich muss den Inhalt der Antwort von einer bestimmten URL zur Verarbeitung erhalten.
Lösung
Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://www.example.com", False
o.send
' o.responseText now holds the response as a string.
Andere Tipps
Sie haben zum Zeitpunkt des Schreibens nicht beschrieben, was Sie mit der Antwort machen werden oder wie der Inhaltstyp ist. Eine Antwort enthält bereits eine sehr grundlegende Verwendung von MSXML2.XMLHTTP
(Ich empfehle die expliziteren MSXML2.XMLHTTP.3.0
progid) Wie auch immer Sie mit der Antwort unterschiedliche Dinge tun müssen, es ist möglicherweise kein Text.
Das XMLHTTP hat auch a responseBody
Eigenschaft, die eine Byte -Array -Version der Antwort ist, und es gibt a responseStream
Welches ist ein IStream
Wrapper für die Antwort.
Beachten Sie, dass Sie in einer serverseitigen Anforderung (z. B. VBScript in ASP) verwenden würden MSXML.ServerXMLHTTP.3.0
oder WinHttp.WinHttpRequest.5.1
(die eine nahezu identische Schnittstelle hat).
Hier ist ein Beispiel für die Verwendung von XMLHTTP, um eine PDF-Datei zu holen und zu speichern:-
Dim oXMLHTTP
Dim oStream
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
oXMLHTTP.Open "GET", "http://someserver/folder/file.pdf", False
oXMLHTTP.Send
If oXMLHTTP.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write oXMLHTTP.responseBody
oStream.SaveToFile "c:\somefolder\file.pdf"
oStream.Close
End If
Wenn Sie die GET -Anfrage verwenden, um tatsächlich Daten zu senden ...
Das Problem mit msxml2.xmlhttp besteht darin, dass es mehrere Versionen davon gibt, mit unterschiedlichen Namen abhängig von der Windows -Betriebssystemversion und Patches.
Dies erklärt es:http://support.microsoft.com/kb/269238
Ich hatte mehr Glück mit VBScript, um sie anzurufen
set ID = CreateObject("InternetExplorer.Application")
IE.visible = 0
IE.navigate "http://example.com/parser.php?key=" & value & "key2=" & value2
do while IE.Busy....
.... und mehr Zeug, aber nur um die Anfrage durchlaufen zu lassen.
strRequest = "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" " &_
"xmlns:tem=""http://tempuri.org/"">" &_
"<soap:Header/>" &_
"<soap:Body>" &_
"<tem:Authorization>" &_
"<tem:strCC>"&1234123412341234&"</tem:strCC>" &_
"<tem:strEXPMNTH>"&11&"</tem:strEXPMNTH>" &_
"<tem:CVV2>"&123&"</tem:CVV2>" &_
"<tem:strYR>"&23&"</tem:strYR>" &_
"<tem:dblAmount>"&1235&"</tem:dblAmount>" &_
"</tem:Authorization>" &_
"</soap:Body>" &_
"</soap:Envelope>"
EndPointLink = "http://www.trainingrite.net/trainingrite_epaysystem" &_
"/trainingrite_epaysystem/tr_epaysys.asmx"
dim http
set http=createObject("Microsoft.XMLHTTP")
http.open "POST",EndPointLink,false
http.setRequestHeader "Content-Type","text/xml"
msgbox "REQUEST : " & strRequest
http.send strRequest
If http.Status = 200 Then
'msgbox "RESPONSE : " & http.responseXML.xml
msgbox "RESPONSE : " & http.responseText
responseText=http.responseText
else
msgbox "ERRCODE : " & http.status
End If
Call ParseTag(responseText,"AuthorizationResult")
Call CreateXMLEvidence(responseText,strRequest)
'Function to fetch the required message from a TAG
Function ParseTag(ResponseXML,SearchTag)
ResponseMessage=split(split(split(ResponseXML,SearchTag)(1),"</")(0),">")(1)
Msgbox ResponseMessage
End Function
'Function to create XML test evidence files
Function CreateXMLEvidence(ResponseXML,strRequest)
Set fso=createobject("Scripting.FileSystemObject")
Set qfile=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleResponse.xml",2)
Set qfile1=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleReuest.xml",2)
qfile.write ResponseXML
qfile.close
qfile1.write strRequest
qfile1.close
End Function