Gibt es eine Möglichkeit herauszufinden, wie viel von einer GET-Anfrage erhalten wurde? Ich kann Len(.ResponseBody)
nicht tun, bis es abgeschlossen ist, so dass das nicht möglich ist.Download-Fortschritt mit WinHttp.WinHttpRequest.5.1
Antwort
Ich untersuchte, wie Sie an IWinHttpRequestEvents
binden können. Das Ereignis OnResponseDataAvailable
ist genau das, was Sie brauchen. Es würde Ihnen die Daten geben, wie sie hereinkamen. Dann könnten Sie damit umgehen, wie Sie wollen.
Leider führt der Versuch, an diese Ereignisschnittstelle zu binden, zum Absturz von VBScript mit einem C0000005 GPF. Ich fand auch einen Hinweis darauf, dass er in einer different language abstürzte. Also kann ich nicht sagen, ob das in VBA oder VB6 oder einer anderen Sprache funktionieren würde. Details werden in der folgenden Frage diskutiert.
Die Alternative ist, zu Msxml2.XMLHTTP
Msxml2.ServerXMLHTTP
oder zu wechseln. Diese Objekte werden mit einer Eigenschaft namens readyState
geliefert, die Ihnen eine Vorstellung davon gibt, was mit dem Download geschieht. Es gibt Ihnen nicht die aktuelle Anzahl der heruntergeladenen Bytes, aber es ist etwas.
Darüber hinaus können Sie das Ereignis onReadyStateChange
Trap, die Sie wissen lassen, wenn die readyState
auf dem Objekt geändert hat. Microsoft hat sogar sample code zum Abfangen des Ereignisses bereitgestellt.