Descomprimir la respuesta de gzip de WebClient

¿Hay alguna manera rápida de descomprimir la respuesta de gzip descargada con el método WebClient.DownloadString ()? ¿Tiene alguna sugerencia sobre cómo manejar las respuestas de gzip con WebClient?

La forma más fácil de hacerlo es usar la descompresión automática incorporada con la clase HttpWebRequest .

 var request = (HttpWebRequest)HttpWebRequest.Create("http://stackoverflow.com"); request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 

Para hacer esto con un WebClient , debe crear su propia clase derivada de WebClient y anular el método GetWebRequest() .

 public class GZipWebClient : WebClient { protected override WebRequest GetWebRequest(Uri address) { HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; return request; } } 

También vea este hilo SO: ¿HttpWebResponse de .NET descomprime automáticamente las respuestas GZiped y Deflated?