【问题标题】:Java: HttpResponse headers never have "Content-Encoding" but do have "Vary: Accept-Encoding"Java:HttpResponse 标头从不具有“Content-Encoding”,但确实具有“Vary: Accept-Encoding”
【发布时间】:2011-09-06 15:56:31
【问题描述】:

我正在使用以下示例:http://www.devdaily.com/java/jwarehouse/commons-httpclient-4.0.3/httpclient/src/examples/org/apache/http/examples/client/ClientGZipContentCompression.java.shtml

虽然在标头中添加“Accept-Encoding: gzip”应该会告诉服务器您可以接收 gxip 编码,但它似乎并没有以这种方式工作。相反,服务器只响应“Vary: Accept-Encoding”。经过长时间的谷歌搜索,我什至无法真正找出“Vary:Accept-Encoding”的含义。为什么服务器没有以应有的“内容编码:gzip”响应?我错过了什么吗?

编辑:例如,在此网站 (http://www.gidnetwork.com/tools/gzip-test.php) 上检查 www.yahoo.com 时,它会拉入正确的标题(内容编码之一)。但是,当我通过 Java 代码拉入该网站时,内容编码标头不会出现。这是为什么呢?

这是我用来在 Java 中打印标题的代码:

        Header[] h = response.getAllHeaders();
        for (int x = 0; x < h.length; x++)
            System.out.println(h[x]);

【问题讨论】:

  • 你看到http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44了吗?

标签: java gzip httpclient httpresponse content-encoding


【解决方案1】:

您的服务器可能未配置为返回 gzip 压缩的内容。

编辑:针对http://apache.org/,代码按描述工作。粘贴在http://pastebin.com/Ajj4XBb1

【讨论】:

  • 我只是用HttpGet来尝试各种不同的网址。
  • 啊。显示一些代码。并查看stackoverflow.com/questions/1573391/…
  • 我在帖子中包含的 URL 包含我正在尝试使用的代码。它是开箱即用的示例代码。另外,我已经在做你发布的链接建议的事情了。问题是服务器不响应任何包含“gzip”的标头。
  • 啊。好吧,也许你改变了一些东西:我将该代码复制/粘贴到一个新的文本文件中,针对 httpclient-4.0.3.jar 和 httpcore-4.0.1.jar 编译它并运行它并获取一个 gzip 压缩的响应。有关我编译的确切文件,请参阅 pastebin.com/Ajj4XBb1:我所做的只是更改要测试的包名和类名,然后在 Windows 命令行中运行它,如下所示:java -cp .;httpclient-4.0.3.jar;httpcore-4.0.1.jar;commons-logging-1.0.3.jar test
  • 完全有可能:有很多很多糟糕的代理很容易搞砸标题。
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 2013-05-14
  • 2011-04-08
  • 2020-02-11
  • 2013-01-10
  • 2011-03-08
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多