我有一个仅在某些条件下运行的VB6应用程序。当它失败时(在下面的发送语句中),它会生成一个
运行时错误'-2147012867(80072efd)':无法建立与服务器的连接
有趣的是,它总是在Fiddler运行时运行。在某些机器上它运行,无论Fiddler是否正在运行,但在其他机器上它只会在Fiddler运行时运行。 Fiddler甚至不必捕获流量来运行它。
请求是https网站。
代码如下所示:
Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1")
xhr.open "POST", sUrl, bAsync
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.setRequestHeader "Content-Length", Len(sBody)
xhr.send sBody
我已阅读Telerik的文章Help! Running Fiddler Fixes My App???,但似乎没有任何建议的解决方案可行。
任何人都可以向我提供有关可能出现的问题或如何解决这个问题的任何见解吗?
答案 0 :(得分:1)
将代理设置为HTTPREQUEST_PROXYSETTING_DIRECT解决了问题。
' Important Note: The setProxy setting of 1 corresponds to HTTPREQUEST_PROXYSETTING_DIRECT
' (see https://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx)
' Without this, the app would only work on the dev machine when Telerik Fiddler was also
' running. Oddly, the app would run correctly on all other machines.
Set xhr = getRequestObject()
xhr.setProxy 1
xhr.open "POST", sUrl, bAsync
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.setRequestHeader "Content-Length", Len(sBody)
上面引用的Microsoft文章给出了可以设置代理的常量的三个值。我不明白为什么"直接"设置工作,但确实有效。
感谢Jeandey和其他任何看过这个的人。
答案 1 :(得分:1)
您可以查看WinHttpSettings
注册表项设置吗?
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \互联网 设置\连接\ WinHttpSettings
我认为Fiddler
修改了此配置以充当代理。
如果Fiddler
未运行=>没有代理人=>连接错误。
在WinHttpRequest
中,如果未明确调用setProxy
=> HTTPREQUEST_PROXYSETTING_DEFAULT
=> HTTPREQUEST_PROXYSETTING_PRECONFIG
HTTPREQUEST_PROXYSETTING_PRECONFIG
表示应从中获取代理设置 注册表中。