VBA检索大型HTTP请求的MSXML2的替代方案,可访问readyState 3



编辑:随着我等待答案和进行外部研究,这个问题发生了变化。我已经重新表述了标题,问题是我正在寻找MSXML2的替代方案(即使这意味着编写套接字代码)。这个问题的原文留作参考,以帮助将来进行类似搜索的人。

在VBA中,使用MSXML2对象,是否有一种方法可以访问在readyState=3时流式传输数据?

我正在使用OnReadyStateChange方法,但我似乎没有访问CCD_ 2直到readyState为4。当readyState为3时,似乎没有任何数据。

VBA中是否有任何方法可以访问HTTP流式响应它进来的时候?我可以在MSXML2中使用的另一种方法,或者更好的(免费的,可分发的)对象来进行"AJAX"调用?

更多信息:如果我尝试阅读responseStream(或responseText),错误描述为:

The data necessary to complete this operation is not yet available.

第二次编辑,更多信息:这个链接基本上说这是INTERACTIVE(3)状态下的预期行为:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms753800(v=vs.85).aspx

所以我肯定在寻找"还有其他选择吗?"的答案

这是我用WinInet API写的一段旧代码,用于读取区块,它不是异步的,但它在每512个字节后公开一个读取缓冲区(我添加了一个Debug.Print"read"&lngTotalBytesRead来说明)-http://pastebin.com/6uMhkBUF

据我记忆所及,它还可以,但我不得不把它拆开一点。

  • 您需要删除HTTPGetUAString中对App.的调用(最初是VB6),所以只需要HTTPGetUAString = "MyThing"或类似的调用。

  • CCD_ 10为遗留;您可以删除该行。(随后,如果lngContentLen为零,则大小事先未知)

最新更新