有没有办法在Visual Basic脚本中执行HTTP GET请求?我需要获取来自特定URL的响应内容以进行处理。VBS中的HTTP GET
回答
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.
在撰写本文时,您尚未描述您将如何处理响应或其内容类型。一个答案已经包含了一个非常基本的用法MSXML2.XMLHTTP
(我推荐更明确的MSXML2.XMLHTTP.3.0
progID),但是你可能需要对响应做不同的事情,它可能不是文本。
XMLHTTP还有一个responseBody
属性,它是响应的字节数组版本,并且有一个responseStream
它是响应的一个IStream
包装。
请注意,在服务器端要求(例如,ASP托管的VBScript)中,您将使用MSXML.ServerXMLHTTP.3.0
或WinHttp.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
嘿安东尼!我们将如何指定身份验证密钥或从外部请求参数?或者我们可以保留这部分网址。 – 2012-06-26 11:09:03
如果您使用的是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
- 1. http GET GET Limit(iPhone)
- 2. Netflix的HTTP GET
- 3. GAE的HTTP GET
- 4. API中的JSON HTTP GET
- 5. JavaScript中的HTTP GET请求?
- 6. Angular 2 HTTP GET相当于Angular HTTP GET
- 7. 的JavaScript:node.js的HTTP GET
- 8. $ http GET GET Receive Receiving Empty Body
- 9. HTTP的SOAP \ GET \ POST
- 10. http GET上的ios
- 11. HTTP GET与Android的
- 12. HTTP GET请求()
- 13. GET HTTP在Perl
- 14. 型号HTTP GET
- 15. GET HTTP响应
- 16. $ HTTP GET失败
- 17. Http Get和PHP
- 18. HTTP-GET与Android
- 19. $ HTTP GET与angularjs
- 20. http get in nodejs
- 21. AngularJS http get json
- 22. WordNet和HTTP GET
- 23. HTTP-GET-HTTP-POST代理
- 24. 中断HTTP GET操作
- 25. HTTP POST,GET在MVC中?
- 26. HTTP GET或HTTP POST或HTTP PUT,Android
- 27. 基于HTTP GET的JMeter HTTP POST
- 28. 制作的HTTP GET的Qt
- 29. 的Android的BufferedInputStream HTTP POST/GET
- 30. $ HTTP GET的角的js
只是添加第三个bool参数表示是否要调用异步或同步。假值意味着它将是一个同步调用。另外,如果被调用的网站需要,开放API还有两个用于身份验证的参数来传递Userid和密码。 – RBT 2016-04-22 10:48:14
我在使用Windows 2012中的这种方法时遇到问题,我认为这是由于微软发布的许多不同版本造成的。我正在考虑使用antoher方法来从vbs中获取HTTP Get任何想法? – 2016-05-11 14:12:55
一个简单问题的简单例子。我花了2个小时才找到这个,这是我所需要的。好样的! – JediPotPie 2017-04-18 17:39:33