Pregunta

Estoy tratando de imprimir los datos de respuesta cuando hago una petición HTTP, donde jpcap está oliendo los paquetes.

Me las he arreglado para obtener algo de información de cabecera, pero no puedo obtener el contenido HTML reales. Este es el código que estoy usando:

    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 );
    }

Gracias por la ayuda

¿Fue útil?

Solución

Dado que usted es capaz de leer el encabezado HTTP pero no se puede leer el contenido HTML, mi conjetura es que el cuerpo de la respuesta HTTP ha sido comprimido (por ejemplo, utilizando gzip). Se puede reconocer respuestas comprimidas porque el encabezado de respuesta HTTP contiene una línea como:

Content-Encoding: gzip

Si usted puede publicar un ejemplo de salida de su programa, pudimos confirmar esta teoría. En tal caso, se debe utilizar el descomprimir el cuerpo de la entidad para obtener el código HTML enviado por el servidor.

Para más información sobre HTTP codificación de contenido se refiere a RFC 2616 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top