微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

waitForResponse 方法不适用于 XMLHTTP

如何解决waitForResponse 方法不适用于 XMLHTTP

我有一段代码,我在其中声明了一个这样的变量

Dim http As New XMLHTTP60

然后在代码中,我使用了这一行

http.Open "POST",urlexample,False
http.Send strArg

如何使用 waitForResponse 等待服务器响应请求。我尝试在 .Send 语句之后这样循环

While http.ReadyState <> 4: DoEvents: Wend

但这有时效果很好,有时不返回任何内容

解决方法

查看对象模型似乎无法通过 MSXML2.XMLHTTP60 使用此方法,但可以使用 WinHttp.WinHttpRequest。但是后者没有 ReadyState 属性。

enter image description here

您需要调查默认超时并查看是否需要在 WinHttp 对象上使用 SetTimeOuts 以获得更长的时间。

Option Explicit
Public Sub testing()
    Dim http As winHttp.WinHttpRequest
    Set http = New winHttp.WinHttpRequest
  
    With http
        '.SetTimeouts ........
        .Open "GET","http://books.toscrape.com/",True
        .setRequestHeader "User-Agent","Mozilla/5.0"
        .send
        .waitForResponse 1000
    End With
    Stop
End Sub

注意如果 .Open

中的 async arg 设置为 FALSE,您的请求将不会是异步的

有趣的阅读:https://github.com/VBA-tools/VBA-Web/issues/337

似乎 Tim Hall 的 VBA-Web 是一个很好的预打包方式。

WinHTTP

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。