使用 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中文网其他相关文章!