2012-09-21 53 views
7

我想用HttpClient異步讀取分塊(在HTTP 1.1分塊傳輸編碼意義上)內容。異步閱讀來自ASP.NET的HttpClient的分塊內容WebApi

我在看HttpContent異步方法在: MSDN link

然而,在返回任務爲字節數組的情況下,例如:

返回後,所有的任務目標將完成內容已被寫入的字節數組

我收到的分塊內容正是因爲服務器不知道提前時將所有的數據是可用,T我不知道所有內容何時到達。完成任務可能需要幾個小時,而不是等待完成,我希望能夠在它們到達時讀取塊。

我可以以某種方式讀取響應內容的一部分,就像每當接收到4K字節的內容時都會完成一些任務嗎?

在這種情況下使用HttpClient是否有利?

回答

10

使用HttpClient.SendAsync,您可以傳遞一個HttpCompletionOption參數來告訴HttpClient不要爲您緩衝響應,並在其獲取標頭後立即返回。然後,您可以使用ReadAsStreamAsync獲取流,以便在數據到達時提取數據。

+0

看起來很有希望。謝謝。讓我在接受它作爲答案之前嘗試一下。 – Tony

+0

工作很好。我使用HttpSelfHostServer並確保內容被分塊。我可以在客戶端跟隨它的到來。沒有必要手動解析分塊內容 - 即使數據在塊中可用,流在傳輸編碼意義上也已經解除分塊。 – Tony