Pergunta

Estou tentando imprimir os dados de resposta quando fizer uma solicitação HTTP, onde o JPCAP está cheirando os pacotes.

Consegui obter algumas informações sobre o cabeçalho, mas não consigo obter o conteúdo HTML real. Este é o código que estou 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 );
    }

Obrigado pela ajuda

Foi útil?

Solução

Como você pode ler o cabeçalho HTTP, mas não pode ler o conteúdo HTML, meu palpite é que o corpo da resposta HTTP foi comprimido (por exemplo, usando o GZIP). Você pode reconhecer respostas compactadas porque o cabeçalho de resposta HTTP contém uma linha como:

Content-Encoding: gzip

Se você pudesse postar um exemplo de saída do seu programa, poderíamos confirmar essa teoria. Nesse caso, você deve usar o corpo descomprimido para obter o HTML enviado pelo servidor.

Para obter mais informações sobre a codificação de conteúdo HTTP, consulte RFC 2616.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top