web-dev-qa-db-fra.com

HTTP GET dans VBS

Existe-t-il un moyen d'effectuer une requête HTTP GET dans un script Visual Basic? J'ai besoin d'obtenir le contenu de la réponse d'une URL particulière pour le traitement.

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

Au moment de la rédaction, vous n'avez pas décrit ce que vous allez faire de la réponse ou quel est son type de contenu. Une réponse contient déjà une utilisation très basique de MSXML2.XMLHTTP (Je recommande le plus explicite MSXML2.XMLHTTP.3.0 progID) mais vous devrez peut-être faire différentes choses avec la réponse, il ne peut pas s'agir de texte.

Le XMLHTTP a également une propriété responseBody qui est une version de tableau d'octets de la réponse et il y a un responseStream qui est un wrapper IStream pour la réponse.

Notez que dans une exigence côté serveur (par exemple, VBScript hébergé dans ASP), vous utiliseriez MSXML.ServerXMLHTTP.3.0 ou WinHttp.WinHttpRequest.5.1 (qui a une interface presque identique).

Voici un exemple d'utilisation de XmlHttp pour récupérer un fichier PDF et le stocker: -

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

Si vous utilisez la demande GET pour réellement envoyer des données ...

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

Le problème avec MSXML2.XMLHTTP est qu'il existe en plusieurs versions, avec des noms différents selon la version et les correctifs du système d'exploitation Windows.

cela l'explique: http://support.Microsoft.com/kb/269238

j'ai eu plus de chance d'utiliser vbscript pour appeler

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

.... et plus de choses mais juste pour laisser passer la demande.

4
Jamie