2013-05-23 2 views
1

VBS에서 XMLHTTP가 비동기식으로 끝나기 전에 어떻게 읽을 수 있습니까? 아래의 예제 ("이 작업을 완료하는 데 필요한 데이터가 아직 없습니다."잠자기 시간이 충분하지 않은 경우 오류) 큰 위키 백과 페이지를 사용하지만 궁극적으로 나는 무한 웹 페이지에 이것을 사용하려고합니다. /로드가 끝나지 않은 스트림. 그래서, 이 예제를 부분적으로 HTTP 응답을 일찍 수정하는 간단한 방법은 무엇입니까?비동기 XMLHTTP로 부분 응답 받기

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 

답변

0

적어도 XMLHTTPRequest를 사용하는 것은 불가능합니다. documented으로 요청이 완료되기 전에 responseText이나 responseBody도 사용할 수 없습니다.

+0

좋아, 내가 사용할 수있는 다른 속성이 있습니까? 이 예제에서 ResponseText를 ResponseStream으로 변경하면 MsgBox가 해당 속성이 있음을 알리기 전까지는 오류가 발생하지 않지만 단순히 해당 속성에 대한 세부 정보를 보는 방법을 모르겠습니다. 이 성장하는 ResponseStream의 크기를 적어도 볼 수 있어야한다고 생각하지만 그렇게 할 수는 없습니다. 내가 어떻게 그것을 할 수 있는지 또는 실시간 "로드 진행률"을 볼 수있는 다른 VBS 방법을 알고 있다면 도움이 될 것입니다. 사실 실시간 콘텐츠보다 실시간로드 크기가 더 중요합니다. – bobuhito

+0

VBScript에서이 작업을 수행 할 수있는 방법을 알고 있다면 제안했을 것입니다. –