28 votes

HTTP GET en VBS

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

Merci.

45voto

svinto Points 8601
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.

25voto

AnthonyWJones Points 122520

Au moment de la rédaction, vous n'avez pas encore décrit ce que vous allez faire de la réponse ni 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 il se peut que vous deviez faire des choses différentes avec la réponse, il se peut qu'elle ne soit pas du texte.

Le XMLHTTP possède également un responseBody qui est une version de la réponse sous forme de tableau d'octets et il existe une propriété responseStream qui est un 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 (dont l'interface est 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

4voto

Jamie Points 21

Si vous utilisez la requête GET pour 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 en existe plusieurs versions, avec des noms différents selon la version de l'OS Windows et les correctifs.

ceci l'explique : http://support.microsoft.com/kb/269238

j'ai eu plus de chance en utilisant 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 d'autres choses, mais juste pour que la demande soit traitée.

0voto

Rob Walker Points 25840

Ce site poste montre un exemple d'utilisation de XmlHttp à partir d'un VBS.

0voto

        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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X