Question

Je suis en train d'imprimer les données de réponse quand je fais une requête HTTP, où jpcap renifle les paquets.

J'ai réussi à obtenir quelques informations d'en-tête, mais je ne peux pas obtenir le contenu HTML réels. Voici le code que je utilise:

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

Merci pour l'aide

Était-ce utile?

La solution

Puisque vous êtes en mesure de lire l'en-tête HTTP, mais vous ne pouvez pas lire le contenu HTML, je suppose que le corps de la réponse HTTP a été compressé (par exemple, en utilisant gzip). Vous pouvez reconnaître les réponses compressées parce que l'en-tête de réponse HTTP contient une ligne comme:

Content-Encoding: gzip

Si vous pouviez poster un exemple de sortie de votre programme, nous pourrions confirmer cette théorie. Dans ce cas, vous devez utiliser le Décompressez le corps d'entité pour obtenir le code HTML envoyé par le serveur.

Pour plus d'informations sur le codage de contenu HTTP reportez-vous à RFC 2616 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top