使用来自Java应用程序的Fiddler捕获HTTP流量

时间:2017-07-05 18:59:45

标签: java https fiddler

我很难使用Fiddler诊断Java应用程序中的问题以连接到Microsoft Graph的API。这是我的基本环境:

JDK:1.8.0_131 Apache HttpClient:4.4 提琴手:4.6

我想要达到的端点是https://login.microsoftonline.com/common/oauth2/authorize我遇到的问题是Fiddler没有捕获流量。

我已经尝试了Googling为这个问题所做的各种事情,但还没有让它发挥作用。在我的应用程序中,我按如下方式设置代理设置:

httpClientBuilder.setProxy(new HttpHost(proxyServer, proxyPort, proxyScheme));
httpClientBuilder.build();
  • 如果我使用(“127.0.0.1”,8888,“https”):那么我看到的错误是: 无法识别的SSL消息,明文连接?
  • 如果我使用 (“127.0.0.1”,8888,“http”):然后我看到的错误是:I / O. 捕获异常(org.apache.http.conn.UnsupportedSchemeException) 处理请求时 {TLS} - GT; http://127.0.0.1:8888-> https://login.microsoftonline.com:443
  • 不支持http协议

我已经尝试了其他的东西(例如“localhost”,“localhost。”等,如建议的那样,设置:-Djsse.enableSNIExtension = false),但到目前为止还没有运气。希望我错过了一些明显的东西!谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

事实证明,代理的第二个配置是正确使用的(使用" http"),但我忘记的是我在HttpClientBuilder中设置了ConnectionSocketFactoryRegistry。我没有为" http"注册一个ConnectionSocketFactory。这导致第二个配置失败。我将此添加到HttpClientBuilder,现在我可以看到Fiddler捕获的流量:

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