WinHTTP请求GET未检索Excel VBA

时间:2015-09-24 19:04:51

标签: excel vba excel-vba get winhttprequest

我有一个宏,它触发对门户的GET调用。以下是URL结构:

的https:// {P_URL_PORT} / IBM /控制台/状态文本=真安培;类型=簇安培;名称= {P_CELL}&安培;时间= {} TSTAMP

这是我的宏。

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
WinHttpReq.Open "GET", strURL, False, userNTID, userPassword
WinHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
WinHttpReq.Send
result1 = WinHttpReq.responseText

但我没有得到预期的回应。它正在显示登录屏幕响应。我尝试添加POST方法,它将发送登录URL,用户名和密码。但GET调用仍未检索实际响应。

1 个答案:

答案 0 :(得分:0)

WinHttpRequest的open函数不会将用户名和密码作为参数。如果您能够在Internet Explorer中自动登录该站点,则可以通过SetAutoLogonPolicy()

使用这些设置
  

警告:自动登录意味着不是由于cookie而是由于代理设置。有时您可以自动登录到某个站点,因为浏览器已经记住您上次登录。

     

确保: - 关闭所有浏览器窗口。打开私人窗口。如果您现在自动登录,则表示它在Internet选项中设置,SetAutoLogonPolicy()应该可以正常工作。

Dim URL As String
    URL = "" 'provide URL
Dim HDoc As HTMLDocument
Dim whr As New WinHttpRequest
whr.Open "GET", URL, False
whr.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
whr.SetAutoLogonPolicy AutoLogonPolicy_Always
whr.Send

如果您需要登录,请提供凭据,然后使用SetCredentials()。可以找到这种请求的一个很好的例子here