WinHTTP 和 MSXML 永远挂在 .Send() 上
WinHTTP and MSXML hangs on .Send() forever
我正在尝试创建一个应用程序多次连接到我办公室的内部 API。这些是对同一网络上服务器的简单 GET 请求(通过 IP 访问)。但是在我们的一些机器中,.Send()
永远挂起。这是代码:
Func get_url($RequestURL)
;Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; didn't work too
Local $oHTTP = ObjCreate("MSXML2.ServerXMLHTTP.3.0")
$oHTTP.Open("GET", $RequestURL, False)
$oHTTP.Send()
if $oHTTP.status == 200 Then
Return $oHTTP.ResponseText
Else
Return SetError($oHTTP.status, 0, False)
EndIf
EndFunc
虽然相同的代码在某些机器上运行良好,但在其他机器上,它会永远挂在 $oHTTP.Send()
上。然而,在这些机器上,我可以毫无问题地使用 telnet、netcat 和任何 Web 浏览器连接到 IP。双方都关闭了防火墙。
在研究它时,我发现不仅我遇到了这个问题,而且我找到的 none 个主题都有解决方案。此功能是否已弃用?如果是这样,什么是替代品?
嗯,这个解决方案和 bug 本身一样奇怪。
刚在脚本开始添加InetGet("http://google.com")
,一切正常。
也许 Windows 不允许应用程序在一段时间后没有打开套接字的情况下打开套接字...... ,我确实这么认为)。
我正在尝试创建一个应用程序多次连接到我办公室的内部 API。这些是对同一网络上服务器的简单 GET 请求(通过 IP 访问)。但是在我们的一些机器中,.Send()
永远挂起。这是代码:
Func get_url($RequestURL)
;Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ; didn't work too
Local $oHTTP = ObjCreate("MSXML2.ServerXMLHTTP.3.0")
$oHTTP.Open("GET", $RequestURL, False)
$oHTTP.Send()
if $oHTTP.status == 200 Then
Return $oHTTP.ResponseText
Else
Return SetError($oHTTP.status, 0, False)
EndIf
EndFunc
虽然相同的代码在某些机器上运行良好,但在其他机器上,它会永远挂在 $oHTTP.Send()
上。然而,在这些机器上,我可以毫无问题地使用 telnet、netcat 和任何 Web 浏览器连接到 IP。双方都关闭了防火墙。
在研究它时,我发现不仅我遇到了这个问题,而且我找到的 none 个主题都有解决方案。此功能是否已弃用?如果是这样,什么是替代品?
嗯,这个解决方案和 bug 本身一样奇怪。
刚在脚本开始添加InetGet("http://google.com")
,一切正常。
也许 Windows 不允许应用程序在一段时间后没有打开套接字的情况下打开套接字...... ,我确实这么认为)。