1

我有一个触发对门户的 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 调用仍然没有检索到实际响应。

4

1 回答 1

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()。可以在此处找到此类请求的一个很好的示例

于 2015-11-23T08:23:16.550 回答