Maison >développement back-end >C++ >Comment décompresser les flux GZip à partir d'une réponse HTTPClient dans WCF et .NET Core ?

Comment décompresser les flux GZip à partir d'une réponse HTTPClient dans WCF et .NET Core ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 17:42:09134parcourir

How to Decompress GZip Streams from an HTTPClient Response in WCF and .NET Core?

Décompresser le flux GZip de la réponse HTTPClient

Lorsque vous essayez d'intégrer des API qui renvoient du JSON codé en GZip, il est essentiel de décoder la réponse compressée avant de poursuivre le traitement. L'extrait de code suivant montre comment décompresser une réponse codée en GZip dans un service WCF :

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

using (var client = new HttpClient(handler))
{
    // 获取响应并进一步处理
}</code>

Remarque : Il est recommandé d'éviter d'utiliser using dans un bloc HttpClient pour éviter l'épuisement des ports. Veuillez envisager d'utiliser le modèle suivant :

<code class="language-csharp">private static HttpClient client = null;

ContructorMethod()
{
   if(client == null)
   {
        HttpClientHandler handler = new HttpClientHandler()
        {
            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
        };        
        client = new HttpClient(handler);
   }
// 你的代码            
 }</code>

Alternativement, pour les applications .Net Core 2.1, il est recommandé d'utiliser IHttpClientFactory et de l'injecter dans le code de démarrage :

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

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