我正试图在我办公室的Excel中使用VBA发出HTTP请求,但它不起作用。我的办公室网络使用代理连接到internet,因此http请求不会直接到达所请求的URL。
我在没有代理的情况下在家里尝试了以下代码(不使用代理进行连接的代码),它工作得很好。
当我在代码中设置代理(请参阅通过代理服务器连接的代码)并在我的办公室运行它时,它总是在没有到达请求的页面时超时。你能告诉我我的代码哪里错了以及如何修复它吗?请注意,我的办公网络使用的是一个PAC文件,我可以下载该文件,其中包含函数FindProxyForURL(url,主机)。我从那里得到了代理服务器地址。
'Code to connect without proxy
Dim WHTTP As WinHttp.WinHttpRequest
Set WHTTP = New WinHttp.WinHttpRequest
WHTTP.Open "GET", "http://www.google.com", False
WHTTP.Send
x = WHTTP.ResponseText
Debug.Print x
'Code to connect via a proxy server
Dim WHTTP As WinHttp.WinHttpRequest
Dim proxy As String
Set WHTTP = New WinHttp.WinHttpRequest
proxy = "myoffice_proxy_IP:80"
WHTTP.Open "GET", "http://www.google.com", False
WHTTP.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, proxy, ""
WHTTP.Send
x = WHTTP.ResponseText
Debug.Print x发布于 2020-01-17 00:28:41
HTTPREQUEST_PROXYSETTING_PROXY是一个常量,你必须定义它。例如,这是WHTTP.SetProxy命令可以接受的所有值:
HTTPREQUEST_PROXYSETTING_DEFAULT = 0
HTTPREQUEST_PROXYSETTING_PRECONFIG = 0
HTTPREQUEST_PROXYSETTING_DIRECT = 1
HTTPREQUEST_PROXYSETTING_PROXY = 2https://stackoverflow.com/questions/57732162
复制相似问题