Question

Je voudrais savoir combien de données a été envoyé en réponse à une certaine http demande. Ce que je fais actuellement est la suivante:

   HttpURLConnection con = (HttpURLConnection) feedurl.openConnection();

// vérifier la réponse de la taille du contenu    int feedsize = con.getContentLength ();

Le problème est que-legnth de contenu est pas toujours définie. Par exemple. lorsque le serveur utilise transfert encoding = chunked Je reviens une valeur de -1.

Je fais pas besoin de ceci pour afficher des informations de progression. J'ai juste besoin de connaître la taille des données qui m'a été envoyé après qu'il a été fait.

Arrière-plan. Je besoin de cette information parce que je voudrais comparer à la taille d'une réponse, qui a été envoyé en utilisant l'encodage gzip

Autres conseils

Vous pouvez étendre FilterInputStream, outrepassant les read(), read(byte[],int,int) et méthodes de skip de sorte que après avoir appelé le formulaire de super, ils mettent à jour un compteur avec le nombre d'octets lus.

Ensuite, enveloppez le flux d'entrée retourné par URLConnection avec l'un de ceux-ci, et utiliser l'emballage en place du flux d'origine. Lorsque vous avez terminé, vous pouvez interroger son compteur de wrapper.

Autres ( « manuel ») approche serait d'utiliser un outil comme YSlow pour recueillir des statistiques dans un navigateur, ou Wireshark pour examiner le trafic sur le réseau.

scroll top