【问题标题】:Capturing HTTP traffic using Fiddler from Java applicaiton使用 Fiddler 从 Java 应用程序捕获 HTTP 流量
【发布时间】:2017-07-05 18:59:45
【问题描述】:

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

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

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

对于这个问题,我已经尝试了谷歌搜索建议的各种方法,但没有得到它的工作。在我的应用程序中,我将代理设置如下:

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}->http://127.0.0.1:8888->https://login.microsoftonline.com:443: 不支持 http 协议

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

【问题讨论】:

    标签: java https fiddler


    【解决方案1】:

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

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

    【讨论】:

      最近更新 更多