Question

Existe-t-il un moyen d'effectuer une demande HTTP GET dans un script Visual Basic? Je dois obtenir le contenu de la réponse à partir d'une URL particulière pour traitement.

Était-ce utile?

La solution

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.

Autres conseils

Au moment de la rédaction de ce document, vous n’avez pas décrit ce que vous allez faire avec 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 vous devrez peut-être faire différentes choses avec la réponse , il se peut que ce ne soit pas du texte.

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

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

Voici un exemple d'utilisation de XmlHttp pour extraire 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

Si vous utilisez la requête 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 en fonction de la version de Windows et des 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 plus de choses mais juste pour laisser la demande aller à travers.

        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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top