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