c# - 解压缩来自 WebClient 的 gzip 响应

标签 c# .net webclient

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

最佳答案

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

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?

关于c# - 解压缩来自 WebClient 的 gzip 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567313/

相关文章:

c# - InitializeComponent 在两个构造函数中,还是在一个具有构造函数继承的构造函数中?

c# - WebClient DownloadString 不返回任何内容

svn - 有没有可以commit的源代码管理系统(svn、git等)webclient?

javascript - 如何下载网页组件?

c# - 如何在 Visual Studio 中使用 C# 创建 SQLite 数据库?

c# - 复杂类型的子集和

C# 查找一串数字中每个能被 3 整除的数字

c# - 打开文件夹并选择多个文件

.net - 用于实时消息动态客户端列表的最佳技术

.net - 创建 .net 类库时出现不受支持的框架错误