軟體工程師的小事:到底要不要 Close

使用 HttpClient 類別取得接收資料進度

文章將介紹使用 HttpClient 類別取得串接 Http 服務,並在接收資料時顯示目前進度:接收位元組、百分比。

在串接服務時顯示處理進度可降低使用者認為應用程式出現異常的機會。
範例程式碼說明

Github 上的範例程式碼

在主控台應用程式使用 HttpClient 類別下載 Ubuntu Server 安裝映像檔,並顯示檔案下載的進度。

sample-application-screenshot

檔案下載進度資訊於 ProgressMessageHandler 類別的 HttpReceiveProgress 事件。

ProgressMessageHandler 類別在 System.Net.Http.Formatting.Extension 套件中,可使用 Nuget 取得套件內容。

預設 HttpClient 逾時時間為 100 秒,此範例修改 HttpClient.Timeout 屬性避免逾時例外。

HttpReceiveProgress 事件方法的 HttpProgressEventArgs 類別提供下列屬性 BytesTransferred、TotalBytes 與 ProgressPercentage。

若 Http 服務的 Response Header 沒有包含 Content Length,TotalBytes 與 ProgressPercentage 不會顯示數值。
參考資料

留言