VBS中的HTTP GET

有没有办法在Visual Basic脚本中执行HTTP GET请求? 我需要从特定的URL获取响应的内容进行处理。

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. 

在撰写本文的时候,你还没有描述你将要做什么或者什么是内容types。 答案已经包含了MSXML2.XMLHTTP一个非常基本的用法(我推荐更明确的MSXML2.XMLHTTP.3.0 progID),但是您可能需要对响应做不同的事情,它可能不是文本。

XMLHTTP还有一个responseBody属性,它是responseBody的字节数组版本,并且有一个responseStream ,它是responseStreamIStream包装器。

请注意,在服务器端的要求(例如,在ASP中托pipe的VBScript),您可以使用MSXML.ServerXMLHTTP.3.0WinHttp.WinHttpRequest.5.1 (它具有几乎相同的接口)。

这是一个使用XmlHttp获取PDF文件并存储的例子:

 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 

如果您正在使用GET请求来实际发送数据…

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

与MSXML2.XMLHTTP的问题是,它有几个版本,不同的名称取决于Windows操作系统版本和补丁。

这解释了它: http : //support.microsoft.com/kb/269238

我有更多的运气使用VBScript来调用

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

….和更多的东西,但只是让请求通过。

  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