编辑:随着我等待答案和进行外部研究,这个问题发生了变化。我已经重新表述了标题,问题是我正在寻找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为零,则大小事先未知)