WinHTTP 和 MSXML 永远挂在 .Send() 上

问题描述 投票:0回答:1

我正在尝试创建一个可多次连接到我办公室的内部 API 的应用程序。这些是对同一网络上的服务器(通过 IP 访问)的简单 GET 请求。但在我们的一些机器中,

.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,没有任何问题。双方防火墙都关闭。

在研究这个问题时,我发现不仅仅是我面临这个问题,而且我找到的主题都没有解决方案。此功能已被弃用吗?如果是的话,用什么替代?

windows http winapi autoit
1个回答
0
投票

解决方案和错误本身一样奇怪。

刚刚在脚本开始处添加了

InetGet("http://google.com")
,一切正常。

也许 Windows 不允许应用程序在一段时间没有打开套接字的情况下打开套接字...或者这确实是一个错误(因为我在网络上看到有关此错误的主题甚至比我还要老,我确实这么认为)。

© www.soinside.com 2019 - 2024. All rights reserved.