2017-07-05 2 views
0

J'ai du mal à utiliser Fiddler pour diagnostiquer un problème dans une application Java pour me connecter à l'API de Microsoft Graph. Voici mon environnement de base:Capture du trafic HTTP en utilisant Fiddler à partir de l'application Java

JDK: 1.8.0_131 Apache HttpClient: 4.4 Fiddler: 4.6

Le critère d'évaluation que je suis en train d'atteindre est https://login.microsoftonline.com/common/oauth2/authorize Le problème que j'ai est que le trafic ne soit pas capturé par Fiddler .

J'ai essayé différentes choses comme suggéré par Googling pour ce problème, mais je n'ai pas réussi à le faire fonctionner. Dans mon application, je mets les paramètres de proxy comme suit:

httpClientBuilder.setProxy(new HttpHost(proxyServer, proxyPort, proxyScheme)); 
httpClientBuilder.build(); 
  • Si j'utilise ("127.0.0.1", 8888, "https"): l'erreur que je vois est: message SSL Unrecognized , connexion en clair?
  • Si je ("127.0.0.1", 8888, "http"): l'erreur que je vois est: E/S exception (org.apache.http.conn.UnsupportedSchemeException) pris lors du traitement de la demande à {tls} ->http://127.0.0.1:8888->https://login.microsoftonline.com:443: protocole HTTP est pas pris en charge

J'ai essayé d'autres choses (par exemple "localhost", "localhost.", et ainsi de suite comme l'a suggéré, et le réglage: -Djsse.enableSNIExtension = false), mais jusqu'à présent, pas de chance. J'espère qu'il me manque quelque chose d'évident! Merci pour toute aide.

Répondre

0

Il s'avère que la deuxième configuration pour le proxy est la bonne à utiliser (en utilisant "http"), mais ce que j'avais oublié était que je définissais un ConnectionSocketFactoryRegistry dans mon HttpClientBuilder. Je n'avais pas enregistré ConnectionSocketFactory pour "http" et cela a causé l'échec de la deuxième configuration. J'ai ajouté ceci à HttpClientBuilder, et maintenant je peux voir le trafic étant capturé par Fiddler:

connectionSocketFactoryRegistryBuilder.register("http", new PlainConnectionSocketFactory());