【问题标题】:Fiddler not capturing HTTP requests from Java ApplicationFiddler 未从 Java 应用程序捕获 HTTP 请求
【发布时间】:2012-03-08 16:01:03
【问题描述】:

我目前正在编写一个使用 HTTP POST 将 csv 文件和一些其他参数上传到服务器的 java 应用程序。服务器不断向我的应用程序返回 500 个错误,我想在 Fiddler 中查看 HTTP 请求,以便查看 POST 请求。
当我运行 Fiddler 时,它不会捕获来自 Java 应用程序的任何 HTTP 流量。我已经编写了一个有效的 GET 请求,所以我知道我可以与服务器通信,但是没有通过 Fiddler 显示流量。

【问题讨论】:

  • 是否有 Java Servlet 处理帖子?
  • 确定不是https流量?
  • 没有。我正在使用 Apache 的 HTTPComponents 从服务器上的 API 调用上传方法。
  • @matcheek 是 HTTPS 流量。这可以通过 Fiddler 捕获吗?

标签: java netbeans http-post fiddler


【解决方案1】:

您可以通过设置属性简单地将 Fiddler 设置为您的应用程序的 HTTP 代理

http.proxyHost 到 localhost 和 http.proxyPort 到 8888 用于 HTTP 流量和 https.proxyHost / https.proxyPort 用于 HTTPS 流量。 对于 HTTPS 流量,您还必须将 Fiddler 根证书(可在选项对话框中导出)作为可信证书添加到您的应用程序。

您可以通过在代码开头添加以下行来做到这一点

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

或在启动 Java-VM 时通过命令行设置:

java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 ...

【讨论】:

  • 我写的开发服务器使用自签名证书,所以我编写了类来信任所有证书。我已经设置了 proxyHost 和 proxyPort 属性,但是我仍然没有通过 Fiddler 看到来自应用程序的任何流量。
  • 我能够通过在属性中使用 https 并将本地主机更改为 127.0.0.1 来使其工作。
  • 我的更改使查看使用 HttpURLConnection 的 HTTP GET 请求成为可能。 POST 请求正在使用 Apache 的 HttpComponents,我仍然看不到这个流量。
  • @Andrew 使用两种独立的技术听起来不像是一个好的应用程序设计(出现问题的机会加倍)。无论如何,您可以在 apache http 客户端中设置代理:hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/…
【解决方案2】:

使用 Jetty HTTP 客户端,之前的解决方案不起作用。 然而,以下工作:

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

【讨论】:

    【解决方案3】:

    使用 EasyRestClient 使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      相关资源
      最近更新 更多