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!