【问题标题】:WinHTTP Request GET is not retrieving the response in Excel VBAWinHTTP Request GET 未在 Excel VBA 中检索响应
【发布时间】:2015-09-24 19:04:51
【问题描述】:

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

https://{P_URL_PORT}/ibm/console/status?text=true&type=cluster&name={P_CELL}&time={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 调用仍然没有检索到实际响应。

【问题讨论】:

  • 您很可能遗漏了一些标题。至少我会添加WinHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
  • 我尝试添加请求标头,但没有得到预期的响应。

标签: vba excel get winhttprequest


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多