【问题标题】:Uncompressing gzip response from WebClient解压缩来自 WebClient 的 gzip 响应
【发布时间】:2011-06-01 19:48:24
【问题描述】:

有没有一种快速的方法来解压缩使用 WebClient.DownloadString() 方法下载的 gzip 响应?您对如何使用 WebClient 处理 gzip 响应有什么建议吗?

【问题讨论】:

    标签: c# .net webclient


    【解决方案1】:

    最简单的方法是使用内置的automatic decompressionHttpWebRequest 类。

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

    要使用WebClient 执行此操作,您必须使自己的类派生自WebClient 并覆盖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;
        }
    }
    

    另见此 SO 线程:Does .NET's HttpWebResponse uncompress automatically GZiped and Deflated responses?

    【讨论】:

    • 派生的webclient类不需要指定acceptencoding头吗?
    猜你喜欢
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多