Java: Affichage de la demande d'un HttpURLConnection avant de l'envoyer
Je veux faire quelques appels de l'API à un serveur à l'aide de HttpURLConnection
. Mais les demandes ne sont pas réussies, le retour:
<error>
<http_status>400 Bad Request</http_status>
<message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
</error>
Je tiens donc à vérifier ce que le "vrai" contenu qui est envoyé au serveur. Par contenu réel, je veux dire l'exact requête HTTP.
Des idées comment je peux le voir?
Edit:
Basé sur la première de réponses ici, je me dois de préciser mon problème: je veux éviter d'utiliser un programme externe comme HTTP sniffer ou quoi que ce soit, et j'espérais qu'il n'y est une fonction ou une propriété ou tout ce qui contient l'information que je cherche.
Si ce n'est pas le cas, quelqu'un sait si cette information peut être manuellement reconstruit (par exemple par l'appel de plusieurs fonctions comme getRequestMethod(), etc.)
Je suis confronté à ce problème un peu, souvent, de sorte qu'il vaut la peine de l'effort pour construire une telle fonctionnalité moi-même. Juste besoin de savoir comment 🙂
Vous devez vous connecter pour publier un commentaire.
Vous pouvez mettre le HttpURLConnection en mode debug par activation de java.la journalisation avec
et mis en exploitation forestière.propriétés (par défaut dans JRE_HOME\lib) la propriété suivante
sun.net.www.protocol.http.HttpURLConnection.level = FINEST
tcpdump fonctionnera, mais il peut être difficile de lui faire faire ce que vous voulez. NetCat est plus convivial (voici la page du projet: http://netcat.sourceforge.net/ - la plupart des plates-formes Unix déjà inclus).
Ce sera à l'écoute sur le port TCP 9999, et quand un client HTTP connecte, il va imprimer le texte intégral de la demande.
Utiliser quelque chose comme tcpdump, qui peut vider le réel des paquets de réseau qui sont émis ou reçus par votre ordinateur.