Maison >développement back-end >C++ >Comment décompresser automatiquement les réponses GZip à l'aide de HttpClient dans WCF et .NET Core ?

Comment décompresser automatiquement les réponses GZip à l'aide de HttpClient dans WCF et .NET Core ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-17 17:36:09520parcourir

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

Gérer efficacement les réponses HTTP compressées avec HttpClient

De nombreuses API HTTP renvoient des données compressées (comme GZip), nécessitant une décompression avant utilisation. Cet article montre comment décompresser automatiquement les réponses GZip à l'aide de HttpClient dans les services WCF et les applications .NET Core.

Pour la décompression automatique de GZip, configurez votre HttpClient comme suit :

<code class="language-csharp">HttpClientHandler handler = new HttpClientHandler()
{
  AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};

using (var client = new HttpClient(handler))
{
  // Your HTTP requests here
}</code>

Ce simple ajout garantit que les réponses compressées GZip et Deflate sont automatiquement traitées.

Meilleure pratique : Singleton HttpClient

Pour éviter l'épuisement des ressources (épuisement des ports), il est recommandé d'utiliser une instance HttpClient singleton :

<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 et supérieur : IHttpClientFactory

Pour .NET Core 2.1 et versions ultérieures, exploitez IHttpClientFactory pour l'injection de dépendances et une gestion améliorée :

<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>

Cette approche s'intègre parfaitement au système d'injection de dépendances .NET Core, améliorant ainsi la maintenabilité et la testabilité.

En mettant en œuvre ces méthodes, vous pouvez gérer facilement et efficacement les réponses compressées GZip de votre HttpClient, simplifiant ainsi votre flux de travail de traitement des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn