VBS中的HTTP GET

Jus*_*ett 41 vbscript http request

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

svi*_*nto 71

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.
Run Code Online (Sandbox Code Playgroud)

  • 只是添加第三个bool参数表示要将呼叫设为异步还是同步.假值意味着它将是同步调用.此外,如果被调用的网站需要,开放API还有两个用于身份验证的参数,用于传递Userid和密码. (2认同)

Ant*_*nes 40

您还没有在撰写本文时描述您将如何处理响应或其内容类型.答案已经包含了一个非常基本的用法MSXML2.XMLHTTP(我建议使用更明确的MSXML2.XMLHTTP.3.0progID)但是你可能需要对响应做不同的事情,它可能不是文本.

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

请注意,在服务器端需求(例如,在ASP中托管的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
Run Code Online (Sandbox Code Playgroud)