有没有办法在 Visual Basic 脚本中执行 HTTP GET 请求?我需要从特定 URL 获取响应的内容进行处理。
Justin Bennett
问问题
165604 次
4 回答
74
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.
于 2008-10-15T14:10:18.000 回答
38
在撰写本文时,您还没有描述您将对响应做什么或它的内容类型是什么。一个答案已经包含了一个非常基本的用法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
于 2008-10-16T15:00:06.417 回答
3
如果您使用 GET 请求实际发送数据...
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....
....还有更多的东西,但只是为了让请求通过。
于 2012-02-18T04:12:51.427 回答
0
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
于 2016-06-14T13:08:46.213 回答