it-swarm.com.de

HTTP GET in VBS

Gibt es eine Möglichkeit, eine HTTP-GET-Anforderung in einem Visual Basic-Skript auszuführen? Ich muss den Inhalt der Antwort von einer bestimmten URL zur Verarbeitung abrufen.

40
Justin Bennett
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.
70
svinto

Sie haben zum Zeitpunkt des Schreibens noch nicht beschrieben, was Sie mit der Antwort tun werden oder welchen Inhaltstyp sie hat. Eine Antwort enthält bereits eine sehr grundlegende Verwendung von MSXML2.XMLHTTP (Ich empfehle die explizitere MSXML2.XMLHTTP.3.0 - Programm-ID). Möglicherweise müssen Sie jedoch andere Schritte mit der Antwort ausführen. Möglicherweise handelt es sich dabei nicht um Text.

Das XMLHTTP hat auch eine responseBody -Eigenschaft, die eine Byte-Array-Version der Antwort ist, und es gibt eine responseStream -Umhüllung, die eine IStream -Umhüllung für die Antwort ist.

Beachten Sie, dass Sie in einer serverseitigen Anforderung (z. B. in ASP gehostetem VBScript) MSXML.ServerXMLHTTP.3.0 Oder WinHttp.WinHttpRequest.5.1 (Mit einer nahezu identischen Schnittstelle) verwenden würden.

Hier ist ein Beispiel für die Verwendung von XmlHttp, um eine PDF Datei abzurufen 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
40
AnthonyWJones

Wenn Sie die GET-Anforderung verwenden, um tatsächlich Daten zu senden ...

check: http://techhelplist.com/index.php/tech-tutorials/37-windows-troubles/60-vbscript-sending-get-request

Das Problem mit MSXML2.XMLHTTP ist, dass es mehrere Versionen gibt, deren Namen von der Windows-Betriebssystemversion und den Patches abhängen.

dies erklärt es: http://support.Microsoft.com/kb/269238

ich hatte mehr Glück mit VBScript anrufen

set ID = CreateObject("InternetExplorer.Application")
IE.visible = 0
IE.navigate "http://example.com/parser.php?key=" & value & "key2=" & value2 
do while IE.Busy.... 

.... und vieles mehr, aber nur um die Anfrage durchgehen zu lassen.

4
Jamie