web-dev-qa-db-fra.com

Fiddler ne capture pas les requêtes HTTP depuis une application Java

J'écris actuellement une application Java qui utilise HTTP POST pour télécharger un fichier CSV et quelques autres paramètres sur un serveur. Le serveur renvoie 500 erreurs à mon application et je souhaite afficher la requête HTTP dans Fiddler afin de pouvoir visualiser la requête POST.
Lorsque je lance Fiddler, il ne capture aucun trafic HTTP à partir de l'application Java. J'ai écrit une requête GET qui fonctionne. Je sais donc que je peux communiquer avec le serveur, mais aucun trafic n'est affiché via Fiddler.

21
Andrew

Vous pouvez simplement définir Fiddler comme proxy HTTP pour votre application en définissant les propriétés. 

http.proxyHost à localhost et http.proxyPort à 8888 pour le trafic HTTP et https.proxyHost/https.proxyPort pour le trafic HTTPS. Pour le trafic HTTPS, vous devez également ajouter le certificat racine Fiddler (exportable dans la boîte de dialogue des options) en tant que certificat de confiance pour votre application.

Vous pouvez le faire en ajoutant les lignes suivantes au début de votre code 

System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");

ou les définir via la ligne de commande lors du démarrage de la machine virtuelle Java:

Java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 ...
20
Robert

Avec le client HTTP Jetty, la solution précédente ne fonctionnait pas. Cependant, cela fonctionne:

HttpClient httpClient = new HttpClient();
httpClient.setProxy(new Address("127.0.0.1", 8888));
httpClient.start();
1
foch

Avec EasyRestClient, utilisez ceci:

ClientBuilder builder = new ResteasyClientBuilder().defaultProxy("localhost", 8888, "http");
0
user3227576