c# - 使用 WebClient 启用压缩

标签 c# .net http http-headers

我正在使用 System.Net.WebClient.DownloadFile 从公共(public) Web 服务器下载大量 html 文件。我想启用压缩,因为这可以大大减少数据传输。我在 previous question 中被告知我应该设置“Accept-Encoding: gzip, deflate” header 。 WebClient 有一个允许这样做的 Headers 属性。

我有几个问题:

  1. 假设网络服务器识别标题,这是否适用于 DownloadFile 方法,还是仅使用 DownloadData 方法?我 在 MSDN 或其他网站上找不到任何关于此的信息。
  2. 如果它不适用于 DownloadFile,最简单的方法是什么 如何实现将压缩数据下载到文件?
  3. 是否需要为服务器设置任何其他 header 以压缩其 数据?在旧codinghorror.com条目,杰夫阿特伍德说 “UserAgent” header 也需要设置,但我不知道是什么 值应该是。

最佳答案

  1. DownloadFile 只是原始 WebRequest 的包装器;它只是处理结果并将其打包为"file"或字节数组。
  2. 有效;但是发送到本地文件的数据仍然是压缩的,你必须手动解压。

  3. 您会得到一个默认的 UserAgent。不需要任何特定的 UserAgent 值,除非您访问的站点需要一个值。但是,你必须找到它。 (Jeff 的帖子建议 Google 需要一个;但我不知道这是否仍然正确)

关于c# - 使用 WebClient 启用压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11672826/

相关文章:

c# - 在方法内部等待,直到事件被捕获

c# - EPPLUS 清除一系列单元格的内容

c# - 寻找 .NET 的 MetaWebLog 客户端库。一个存在吗?

c# - Outlook 2016 - VSTO 插件 - 单击功能区控件导致 outlook 崩溃

c# - 在 C# 中加密字符串并在 Delphi 中解密

.net - 使用 MVC 网格组件的参数无效?

c# - 是否可以通过在运行时选择不同的 .net 框架来在一台机器上运行应用程序?

django - 在 Django 处理大请求时维持 http 连接(20 分钟以上)

http - 用于确认的适当的 http 状态代码

c# - 如何从 UWP MediaPlayer 获取流元数据?