-5

WinHttpRequest我正在尝试使用VBA从我的公司网络访问外部网站。该公司有一个需要集成 Windows 身份验证的代理服务器。

如果我尝试使用纯 http 访问 URL,则以下代码有效,但407 - proxy authentication required如果我尝试使用 https 访问 URL,则会获得 http 状态代码。

我需要做什么才能使代码与 https 一起使用?

Sub a()
    Dim w As New WinHttp.WinHttpRequest

    'set proxy        
    w.SetProxy 2, "myproxy:8080"
    'use integrated windows authentication
    w.SetAutoLogonPolicy AutoLogonPolicy_Always
    w.Option(WinHttpRequestOption_EnableRedirects) = True
    w.Open "GET", "https://..."
    w.Send
    Debug.Print w.Status ' Status = 407
    Debug.Print w.Option(WinHttpRequestOption_URL)
End Sub
4

1 回答 1

0

尝试,请插入(在Open和之间Send)一行用于设置凭据,另一行用于忽略(所有)SSL 错误。尝试以下内容:

Sub AccessSiteThroughProxy()
    Dim w As New WinHttp.WinHttpRequest

    'set proxy
    w.setProxy 2, "myproxy:8080"
    'use integrated windows authentication
    w.SetAutoLogonPolicy AutoLogonPolicy_Always
    w.Option(WinHttpRequestOption_EnableRedirects) = True
    w.Open "GET", "https://..."

    'try inserting a line to set credentials:________________________________________
     w.SetCredentials UserName, Password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER ' try Const HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0
     'in order to ignore SSL erors, try:
     w.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = &H3300
    '_________________________________________________________________________________

    w.send
    Debug.Print w.Status ' Status = 407
    Debug.Print w.Option(WinHttpRequestOption_URL)
End Sub
于 2020-05-21T08:58:04.120 回答