【问题标题】:XMLHTTP-Request (AJAX) with VBSkript does not work with proxy connection带有 VBSkript 的 XMLHTTP-Request (AJAX) 不适用于代理连接
【发布时间】:2018-03-12 21:12:43
【问题描述】:

我正在使用 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)

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

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

谢谢!

【问题讨论】:

    标签: ajax vb.net vbscript proxy


    【解决方案1】:

    我找到了解决办法:我要改类,因为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”即可。就我而言,有各种具有正确版本号的键:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多