我正在通过建立一个合法的连接从网站上阅读来源,就像在Java中一样:
final Socket sock = new Socket(hostname, 80);
PrintWriter writer = new PrintWriter(sock.getOutputStream(), true);
writer.println("GET /path HTTP/1.1");
writer.println("Host: " + hostname);
writer.println();
//...
while (!sock.isClosed() && (line = reader.readLine()) != null) {
System.out.println(line);
}
并且效果很好,但是当我使用 - 比如说Firefox浏览网站时,输出中有一些奇怪的行不存在。
问题是一些源代码被一些随机的不同信息打断了,我不知道为什么我会得到这样的信息来破坏我的来源。
<div clas
16d0
s="span5">
或
<td style="text-align:c
2000
enter; vertical-align:middle">information</td>
这是什么以及如何解决?
答案 0 :(得分:3)
看起来服务器正在向您发送Chunked数据。你能发送HTTP/1.0
而不是1.1吗?这应该确保不对响应执行分块。
答案 1 :(得分:1)
您正在从套接字读取HTTP流,而不是使用现有的HTTP读取器。
如果你真的想这样做,你应该阅读HTTP specification。在你的情况下尤其是教派。 3.6关于分块转移。