13

HttpClient を使用して、チャンク化された (HTTP 1.1 チャンク転送エンコーディングの意味で) コンテンツを非同期的に読み取りたいと考えています。

私は HttpContent 非同期メソッドを見ています: MSDN リンク

ただし、バイト配列の Task が返された場合は、次のようになります。

返された Task オブジェクトは、すべてのコンテンツがバイト配列として書き込まれた後に完了します

サーバーはすべてのデータがいつ利用可能になるかを事前に知らないため、チャンクされたコンテンツを正確に取得しています。したがって、すべてのコンテンツがいつ到着するかわかりません。タスクが完了するまで、おそらく何時間も待つのではなく、チャンクが到着したときにチャンクを読み取れるようにしたいと考えています。

応答でコンテンツの 4K バイトが受信されるたびに完了するタスクがあるように、何らかの方法で応答コンテンツの一部を読み取ることはできますか?

この場合、HttpClientを使用することはまったく有利ですか?

4

2 に答える 2

20

HttpClient.SendAsync を使用すると、HttpCompletionOption パラメーターを渡して、HttpClient に応答をバッファリングしないように指示し、ヘッダーを取得したらすぐに返すことができます。次に、ReadAsStreamAsync を使用して、データが到着したときにプルできるストリームを取得できます。

于 2012-09-22T00:48:21.493 に答える