使用 HttpClient 高效處理壓縮的 HTTP 回應
許多 HTTP API 傳回壓縮資料(如 GZip),需要在使用前解壓縮。 本文示範如何在 WCF 服務和 .NET Core 應用程式中使用 HttpClient
自動解壓縮 GZip 回應。
要自動進行 GZip 解壓縮,請如下設定您的 HttpClient
:
<code class="language-csharp">HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; using (var client = new HttpClient(handler)) { // Your HTTP requests here }</code>
這個簡單的新增可確保自動處理 GZip 和 Deflate 壓縮響應。
最佳實務:單例 HttpClient
為了避免資源耗盡(連接埠耗盡),最佳實踐是使用單例 HttpClient
實例:
<code class="language-csharp">private static HttpClient client = null; public void InitializeClient() { if (client == null) { HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; client = new HttpClient(handler); } // Your code using 'client' }</code>
.NET Core 2.1 及更高版本:IHttpClientFactory
對於 .NET Core 2.1 及更高版本,利用 IHttpClientFactory
進行依賴項注入和改進的管理:
<code class="language-csharp">var timeout = Policy.TimeoutAsync<HttpResponseMessage>(TimeSpan.FromSeconds(60)); services.AddHttpClient<XApiClient>().ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }).AddPolicyHandler(request => timeout);</code>
這種方法與.NET Core依賴注入系統無縫集成,增強了可維護性和可測試性。
透過實作這些方法,您可以輕鬆且有效率地處理來自 HttpClient
的 GZip 壓縮回應,從而簡化您的資料處理工作流程。
以上是如何在 WCF 和 .NET Core 中使用 HttpClient 自動解壓縮 GZip 回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!