1
我已经制作了这个方便的VBA函数,该函数使用MSXML2.serverXMLHTTP对象返回给定URL的HTTP状态。这个函数是同步执行的,我的代码的其余部分冻结,直到请求被解析。如何将它变成异步调用?VBA使用HTTP进行异步数据呼叫
当前工作功能:
Function page_http_status(url) As String
Dim XMLHTTP As Object
Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
XMLHTTP.Open "GET", url, False
XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
XMLHTTP.send
page_http_status = XMLHTTP.Status
End Function
onreadystatechange的尝试
我知道有一个XMLHTTP.onreadystatechange事件可以触发一个名为回调函数,但我怎么能触发此函数返回值为page_http_status()?
XMLHTTP.onreadystatechange = FunctionReadyStateChange
然后
Function FunctionReadyStateChange()
MsgBox ("Request received! " & XMLHTTP.Status)
End Function
https://msdn.microsoft.com/en-us/library/ms757849(v=vs.85).aspx - 注意第三个参数。 – user2864740
如果请求异步处理,则函数*不能*根据响应返回字符串,因为请求未完成。 – user2864740
无论如何,你的XMLHTTP将会在事件发生之前超出范围。你应该在函数之外定义'XMLHTTP',也许在模块中定义为'Public'或者别的地方。 –