C#HttpWebRequest - 使用Gzip压缩

use*_*359 2 .net c# compression gzip httpwebrequest

我有一个程序,它产生了很多HttpWebRequests,我读到了使用gzip压缩来加速响应数据的下载.我知道gzip是什么,以及它是如何工作的,但我不知道它在C#中是如何工作的.

假设我有一个简单的GET请求:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.com");
request.Method = "GET";
WebResponse response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

如何在gzip中压缩响应数据?如何显示压缩大小,然后显示未压缩的大小?

谢谢

Bob*_*son 9

有关GZip如何处理Web请求的概要,请参阅此页面.

您需要发送的特定标头是Accept-Encoding: gzip.通常,您需要自己(通过Headers集合)将此添加到请求中,但是有一个快捷方式.根据这个答案,您需要做的就是添加

request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
Run Code Online (Sandbox Code Playgroud)

你的代码.

请注意,您可能无法获得压缩/未压缩的大小 - 请求将在它进入时自动解压缩.但是,因为您无法提前知道服务器是否会尝试发送给您GZipped页面,测试它并不是一件有用的事情.