0

当我发出 HTTP 请求时,我试图打印出响应数据,其中 jpcap 正在嗅探数据包。

我设法获得了一些标题信息,但我无法获得实际的 HTML 内容。这是我正在使用的代码:

    try {
        NetworkInterface[] devices = JpcapCaptor.getDeviceList();

        System.out.println("Opening interface");
        JpcapCaptor captor=JpcapCaptor.openDevice(devices[0], 65535, true, 20);
        captor.setFilter("ip and tcp", true);

        while(true) {
            Packet thisPacket = captor.getPacket();

            if(thisPacket != null) {
                TCPPacket p = (TCPPacket)thisPacket;
                System.out.println(p.toString());
            }
        }

    } catch (Exception e) {
        System.out.println("Error: " + e );
    }

谢谢您的帮助

4

1 回答 1

2

由于您可以读取 HTTP 标头但无法读取 HTML 内容,我猜测 HTTP 响应的正文已被压缩(例如,使用 gzip)。您可以识别压缩响应,因为 HTTP 响应标头包含如下行:

Content-Encoding: gzip

如果您可以发布程序的示例输出,我们可以证实这一理论。在这种情况下,您应该使用解压实体主体来获取服务器发送的 HTML。

有关 HTTP 内容编码的更多信息,请参阅RFC 2616

于 2010-09-01T18:26:44.507 回答