1

我正在使用 XMLHTTP-Request 从网站获取数据以在 VBS 中使用它们。这适用于默认的互联网连接。但目前我必须与使用“代理”连接的客户打交道。

不幸的是,我对不同的代理解决方案不是很熟悉。行为是:我打开浏览器,我会得到一个授权对话框(用户名/密码)。输入用户名/密码后,可以访问所有网站。如果我关闭浏览器并重新启动它,自动设置对话框会再次出现。

这里有一点代码。我正在使用“更好的记事本”,所以我看不到其他对象属性:

Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
XMLHTTP.Open "GET", "http://www.mywebsite.de/getData.php" ,0
XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
XMLHTTP.Send("content=1")

MsgBox(XMLHTTP.responseText)

如果我在使用强制代理的机器上执行此代码,我将立即收到“拒绝访问”错误。

如何在此处添加代理授权支持?如果真的有这样的事情是可能的......

谢谢!

4

1 回答 1

4

我找到了解决方案:我必须更改类,因为Microsoft.XMLHTTP不支持代理配置:

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.4.0")
xmlhttp.Open "POST","http://www.yourwebsite.com",false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setProxy 2, "192.168.0.222:8080"
xmlhttp.setProxyCredentials "your_username" , "password_for_username"
xmlhttp.send

MsgBox(xmlhttp.responseText)

注意一些重要的细节:

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.4.0")

setProxy 和 setProxyCredentials 方法需要版本号: 在参数末尾使用版本号很重要。如果我不使用版本号,它将查找没有 setProyx 和 setProxyCredentials 方法的类的旧版本。出现错误消息(“对象没有方法...”)。

版本号不是微不足道的: 但版本号本身也不是微不足道的。在我的本地环境(W7x64)中,我必须采用版本号“4.0”,但在我的客户端服务器上它不起作用(“无法创建对象......”)。我将不得不采用版本号“6.0”。如果不确定安装的是哪个版本,可以在注册表中查找,只需搜索“MSXML2.ServerXMLHTTP”即可。在我的情况下,有各种具有正确版本号的键:

在此处输入图像描述

于 2013-09-26T07:26:49.757 回答