2

編集:回答を待って外部調査を行ったため、この質問は変更されました。タイトルを言い換えましたが、問題は、MSXML2 に代わるものを探しているということです (たとえそれがソケット コードを記述することを意味するとしても)。質問の元の本文は、参照用と、将来同様の検索を行う人々を助けるためにここに残されています。

VBA では、MSXML2 オブジェクトを使用して、readyState = 3 のときにストリーミング データにアクセスする方法はありますか?

メソッドを使っているのですが、readyStateが4OnReadyStateChangeになるまでアクセスできないようですresponseText。readyStateが3のときは、データがないようです。

VBA で、受信中に HTTP ストリーミング応答にアクセスする方法はありますか? MSXML2で使用できる別の方法、または「AJAX」呼び出しを行うために使用するより良い(無料で配布可能な)オブジェクトはありますか?

詳細: responseStream(または responseText) を読み取ろうとすると、エラーの説明は次のようになります。

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

2 番目の編集、詳細情報: このリンクは基本的に、INTERACTIVE(3) 状態で予想される動作であると述べています:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms753800(v=vs.85) .aspx

だから私は間違いなく「代替品はありますか?」を探しています。答え。

4

1 に答える 1

3

これは、WinInet API を使用してチャンクを読み取るために私が書いた古いコードです。非同期ではありませんが、512 バイトごとに読み取りバッファーを公開します (説明のために Debug.Print "READ " & lngTotalBytesRead を追加しました) - http:// pastebin.com/6uMhkBUF

私が覚えている限りでは、問題なく動作しましたが、少し分解する必要がありました。

  • App.inへの呼び出しを削除する必要がありますHTTPGetUAString(これはもともと VB6 でした)HTTPGetUAString = "MyThing"など。

  • If (lngContentLen = 0&) Then lngContentLen = (BUFF_LEN * DUMMY_BUFF_MULTIPLIER)残り物です。行を削除できます。(その後、lngContentLen がゼロの場合、サイズは事前に不明です)

于 2013-01-10T13:36:36.417 に答える