【发布时间】:2011-06-01 19:48:24
【问题描述】:
有没有一种快速的方法来解压缩使用 WebClient.DownloadString() 方法下载的 gzip 响应?您对如何使用 WebClient 处理 gzip 响应有什么建议吗?
【问题讨论】:
有没有一种快速的方法来解压缩使用 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?
【讨论】: