1

我正在通过建立合法连接从网站读取源代码,就像在 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>

这是什么,我该如何解决?

4

2 回答 2

3

看起来服务器正在向您发送分块数据。你可以发送HTTP/1.0而不是 1.1 吗?这应该确保不对响应执行分块。

于 2013-05-15T09:45:34.853 回答
1

您正在从套接字读取原始的 HTTP 流,而不是使用现有的 HTTP 阅读器。

如果你真的想这样做,你应该阅读HTTP 规范。在你的情况下,尤其是教派。3.6 关于分块传输。

于 2013-05-15T09:49:52.500 回答