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.
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 ...
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();
Avec EasyRestClient, utilisez ceci:
ClientBuilder builder = new ResteasyClientBuilder().defaultProxy("localhost", 8888, "http");