Domanda

Sto cercando di stampare i dati di risposta quando faccio una richiesta HTTP, dove jpcap sta fiutando i pacchetti.

sono riuscito a ottenere alcune informazioni di intestazione, ma non riesco a ottenere il contenuto HTML attuali. Questo è il codice che sto 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 );
    }

Grazie per l'aiuto

È stato utile?

Soluzione

Dal momento che si è in grado di leggere l'header HTTP ma non è possibile leggere il contenuto HTML, la mia ipotesi è che il corpo della risposta HTTP è stato compresso (ad esempio, utilizzando gzip). È possibile riconoscere le risposte compressi perché l'intestazione di risposta HTTP contiene una riga come:

Content-Encoding: gzip

Se si potrebbe inserire un esempio di output del programma, potremmo confermare questa teoria. In tal caso, è necessario utilizzare il decomprimere il corpo dell'entità per ottenere il codice HTML inviato dal server.

Per ulteriori informazioni sulla codifica del contenuto HTTP si riferiscono a RFC 2616 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top