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 中国語 Web サイトの他の関連記事を参照してください。