web-dev-qa-db-fra.com

Avec Apache HTTPClient - comment voir la chaîne de requête brute avant son envoi?

Pour des raisons de débogage, j'aimerais voir la demande brute qui va être envoyée. Existe-t-il un moyen d'obtenir cela sans moniteur HTTP directement à partir de l'API de HttpPost ou HttpClient ?

J'ai trouvé des questions "presque" en double, mais pas pour celle-ci

16
Eran Medan

Vous pouvez définir certaines variables d'environnement pour Apache HttpClient (exemple testé pour 4.3.2).

System.setProperty("org.Apache.commons.logging.Log","org.Apache.commons.logging.impl.SimpleLog");
System.setProperty("org.Apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.wire", "DEBUG");

Il y a aussi quelques variables supplémentaires pour le débogage:

System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.impl.conn", "DEBUG");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.impl.client", "DEBUG");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.client", "DEBUG");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http", "DEBUG");
29
Yser

Essaye ça:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);

method.setParameter(...., ....);

récupérer l'URI

System.out.println("getUri: " + method.getURI());

récupérer les paramètres dans le POST

method.getRequestEntity().writeRequest(System.out);
0
oizirbaf
org.Apache.http.client.fluent.Request#viaProxy 

Cette méthode peut permettre à votre demande de passer par le serveur proxy afin que vous puissiez lancer un serveur proxy local, par exemple Fiddler, afin que ce proxy de débogage puisse afficher les détails de la demande et de la réponse http.

0
peter