与WinHTTP的和Excel配置代理(Configuring proxy with WinHTTP

2019-09-17 05:18发布

我使用的WinHTTP做在一个Excel VBA宏的GET请求。 但是,如果我尝试做从机的请求与代理的网络中,这是行不通的。 如果我手动配置它,它的工作原理,但我不认为谁将会使用我开发会知道他们的代理服务器工具的人们。

有没有一种方法来自动配置代理服务器,或获得从Windows代理配置? 这里有个示例代码:

Dim result As String
Dim URL As String
Dim winHttpReq As Object
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

URL = "http://google.com/"
winHttpReq.Open "GET", URL, False
winHttpReq.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
winHttpReq.setProxy 2, "proxyserver:8080", ""
winHttpReq.send
result = winHttpReq.responseText

在这种情况下,我不想强​​迫用户找到“访问代理服务器:8080”地址 - 我要的是一种自动填补。

非常感谢。

Answer 1:

我从以下链接得到了VBSCRIPT的下方。 您可以使用来获取代理服务器,并把它作为一个变量的代码为“访问代理服务器:8080”:

http://www.activexperts.com/activmonitor/windowsmanagement/scripts/networking/client/retrieving/

如果你知道的VBScript - 这是非常相似,VBA,我想这个应该有很大的帮助。 如果您需要帮助的VBA写这个,让我知道。

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_Proxy")

For Each objItem in colItems
    Wscript.Echo "Proxy Port Number: " & objItem.ProxyPortNumber
    Wscript.Echo "Proxy Server: " & objItem.ProxyServer
    Wscript.Echo "Server Name: " & objItem.ServerName
    Wscript.Echo
Next


Answer 2:

在该页面中寻找一个答案,同样的问题在万一别人绊倒,我想指出这样的回答 ,其中提到使用VBA的Web项目来解决这个确切的问题。

然后,您的代码将是这个样子:

Dim client As New WebClient
With client
    .BaseUrl = "https://www.google.com"
    .EnableAutoProxy = True
End With

Dim request As New WebRequest
With request
    .Method = WebMethod.HttpGet
    .AddHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    .Format = WebFormat.PlainText
End With

Dim response As WebResponse
Set response = client.Execute(request)


文章来源: Configuring proxy with WinHTTP and Excel