使用异步XMLHTTP获取部分响应

使用异步XMLHTTP获取部分响应,http,vbscript,Http,Vbscript,如何在VBS中完成XMLHTTP的异步读取?榜样 下面(其中有一个“完成此操作所需的数据尚不可用” 睡眠时间不够长时出错)使用了一个很大的维基百科页面,但最终我 我想把它用于一个无限的网页/流,它永远不会完成加载。所以 是否有一种简单的方法可以修改此示例以尽早获得部分HTTP响应 strFileURL = "https://en.wikipedia.org/wiki/Algorithm" ' or any big webpage Set objXMLHTTP = CreateObject("

如何在VBS中完成XMLHTTP的异步读取?榜样 下面(其中有一个“完成此操作所需的数据尚不可用” 睡眠时间不够长时出错)使用了一个很大的维基百科页面,但最终我 我想把它用于一个无限的网页/流,它永远不会完成加载。所以 是否有一种简单的方法可以修改此示例以尽早获得部分HTTP响应

strFileURL = "https://en.wikipedia.org/wiki/Algorithm"  ' or any big webpage

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")   ' all of these xmlhttp options have no "streaming success"
' Set objXMLHTTP = CreateObject("Microsoft.XMLHTTP")
' Set objXMLHTTP = CreateObject("Microsoft.XmlHttp")
' Set objXMLHTTP = Createobject("MSXML2.XMLHTTP.3.0")
' Set objXMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.6.0")

objXMLHTTP.open "GET", strFileURL, true
objXMLHTTP.send()

' Is there something other than ResponseText to avoid error and get partial result below (i.e., read html like a stream)?
WScript.Sleep 500                   ' need to play with this time to try to cause mystate1=3 below
mystate1 = objXMLHTTP.ReadyState    ' should be 3
myscan = objXMLHTTP.ResponseText    ' CAUSES ERROR if mystate1 < 4 (comment this line out to avoid error)
WScript.Sleep 1000
mystate2 = objXMLHTTP.ReadyState    ' should be 4
myscan = objXMLHTTP.ResponseText

MsgBox(mystate1)
MsgBox(mystate2)
MsgBox(myscan)

Set objXMLHTTP = Nothing
strFileURL=”https://en.wikipedia.org/wiki/Algorithm“'或任何大网页
设置objXMLHTTP=CreateObject(“MSXML2.XMLHTTP”)“所有这些XMLHTTP选项都没有“流成功”
'设置objXMLHTTP=CreateObject(“Microsoft.XMLHTTP”)
'设置objXMLHTTP=CreateObject(“Microsoft.XmlHttp”)
'Set objXMLHTTP=Createobject(“MSXML2.XMLHTTP.3.0”)
'Set objXMLHTTP=CreateObject(“Msxml2.ServerXMLHTTP.6.0”)
objXMLHTTP.open“GET”,strFileURL,true
objXMLHTTP.send()
'除了ResponseText之外,是否还有其他方法可以避免错误并获得下面的部分结果(即像流一样读取html)?
WScript.Sleep 500'需要利用这段时间尝试使mystate1=3如下
mystate1=objXMLHTTP.ReadyState'应为3
如果mystate1<4,myscan=objXMLHTTP.ResponseText'会导致错误(注释此行以避免错误)
WScript.Sleep 1000
mystate2=objXMLHTTP.ReadyState'应为4
myscan=objXMLHTTP.ResponseText
MsgBox(mystate1)
MsgBox(mystate2)
MsgBox(myscan)
设置objXMLHTTP=Nothing

这是不可能的,至少使用XMLHTTPRequest是不可能的。因为,在请求完成之前,
responseText
responseBody
都不可用。

OK,那么我可以使用其他属性吗?在我的示例中,如果我将ResponseText更改为ResponseStream,我不会得到错误,直到MsgBox告诉我该属性存在,但我只是不知道如何查看有关它的任何详细信息。我想我至少应该能够看到这个不断增长的ResponseStream的规模,但我甚至不能做到这一点。如果你知道我如何做到这一点,或任何其他VBS的方式来查看实时“加载进度”,这将有所帮助。实际上,我更关心的是实时加载的大小,而不是实时内容。如果我知道在VBScript中实现这一点的方法,我会建议这样做。