问题描述
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
属性。
您需要调查默认超时并查看是否需要在 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
有趣的阅读:https://github.com/VBA-tools/VBA-Web/issues/337
似乎 Tim Hall 的 VBA-Web 是一个很好的预打包方式。