ホームページ >バックエンド開発 >C++ >WCF および .NET Core で HttpClient を使用して GZip 応答を自動的に解凍する方法

WCF および .NET Core で HttpClient を使用して GZip 応答を自動的に解凍する方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-17 17:36:09520ブラウズ

How to Automatically Decompress GZip Responses Using HttpClient in WCF and .NET Core?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。