HTTP GET in VBS

C’è un modo per eseguire una richiesta HTTP GET all’interno di uno script di Visual Basic? Ho bisogno di ottenere il contenuto della risposta da un particolare URL per l’elaborazione.

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. 

Al momento della stesura non hai descritto cosa intendi fare della risposta o quale sia il suo tipo di contenuto. Una risposta contiene già un uso molto basilare di MSXML2.XMLHTTP (consiglio il più esplicito MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP.3.0) tuttavia potrebbe essere necessario fare cose diverse con la risposta, potrebbe non essere testo.

XMLHTTP ha anche una proprietà responseBody che è una versione dell’array di byte della responseStream e c’è un responseStream che è un wrapper IStream per la risposta.

Si noti che in un requisito lato server (ad esempio, VBScript ospitato in ASP) si utilizzerà MSXML.ServerXMLHTTP.3.0 o WinHttp.WinHttpRequest.5.1 (che ha un’interfaccia quasi identica).

Ecco un esempio dell’utilizzo di XmlHttp per recuperare un file PDF e memorizzarlo: –

 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 

Se stai utilizzando la richiesta GET per inviare effettivamente i dati …

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

Il problema con MSXML2.XMLHTTP è che esistono diverse versioni di esso, con nomi diversi a seconda della versione di Windows OS e delle patch.

questo lo spiega: http://support.microsoft.com/kb/269238

ho avuto più fortuna usando vbscript per chiamare

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

…. e altre cose ma solo per far passare la richiesta.

  strRequest = "" &_ "" &_ "" &_ "" &_ ""&1234123412341234&"" &_ ""&11&"" &_ ""&123&"" &_ ""&23&"" &_ ""&1235&"" &_ "" &_ "" &_ "" 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),"")(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