如何使用压缩的gzip读取HTTP响应?

时间:2013-04-14 03:58:28

标签: java http tcp

以下代码用于每五秒钟从网站获取一次响应,但根据数据包分析器(例如wireshark),结果总是出现问题。我猜也许HTTP响应是用GZIP压缩的,读取时可能会出错。当我执行代码时,我可以在Eclipse中获得多个Finishied ,这意味着阅读响应已完成 ),但我只能发送一些{{ 1}}根据数据包分析器。为什么?如果我对代码GET / 1.1发表评论,我会很快看到Thread.sleep(1000*5);(太快,根据我的网络速度而异常),但Finished仍然很慢。代码有什么问题?

GET / 1.1

2 个答案:

答案 0 :(得分:0)

你没有分配是。 BufferedReader = null; 你需要分配与socket.getInputStream()

 is = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

答案 1 :(得分:0)

这里的一个问题是HTTP中的换行符是\r\n,而不仅仅是\n。另一个是您的请求需要在标题后面以空行结束。另一个是您说的是HTTP 1.1,但您没有发送内容长度。另一个是你正在阅读EOS的流,然后期望能够写另一个请求并阅读另一个响应。这不起作用:EOS意味着对等方已关闭连接。你为什么不使用HttpURLConnection