>백엔드 개발 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.