Heim >Backend-Entwicklung >C++ >Wie dekomprimiere ich GZip-Streams aus einer HTTPClient-Antwort in WCF und .NET Core?
GZip-Stream aus HTTPClient-Antwort dekomprimieren
Bei der Integration mit APIs, die GZip-codiertes JSON zurückgeben, ist es wichtig, die komprimierte Antwort vor der weiteren Verarbeitung zu dekodieren. Der folgende Codeausschnitt zeigt, wie eine GZip-codierte Antwort in einem WCF-Dienst dekomprimiert wird:
<code class="language-csharp">HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; using (var client = new HttpClient(handler)) { // 获取响应并进一步处理 }</code>
Hinweis: Es wird empfohlen, die Verwendung von using
innerhalb eines HttpClient
-Blocks zu vermeiden, um eine Erschöpfung des Ports zu verhindern. Bitte verwenden Sie das folgende Muster:
<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>
Alternativ wird für .Net Core 2.1-Anwendungen empfohlen, IHttpClientFactory
zu verwenden und es in den Startcode einzufügen:
<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>
Das obige ist der detaillierte Inhalt vonWie dekomprimiere ich GZip-Streams aus einer HTTPClient-Antwort in WCF und .NET Core?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!