Fiddler如何捕捉DefaultHttpClient的HTTP请求

Posted junchu25

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fiddler如何捕捉DefaultHttpClient的HTTP请求相关的知识,希望对你有一定的参考价值。

实际开发中为了解决Ajax跨域请求问题,会通过一个同域的控制器在服务端代理请求目标的Web API并将结果返回。为了便于调试这类请求,我们希望通过Fiddler可以监控到这些请求。Fiddler官方给出了Java应用程序如何配置:Configure a Java Application to Use Fiddler。不过我们发现如果我们使用org.apache.http.impl.client.DefaultHttpClient时,官方提供的两种方法都无效(使用java.net.HttpURLConnection不存在该问题)。

最初查了一些资料了解到需要通过代码显示设置DefaultHttpClient使用代理,如下:

HttpHost proxy = new HttpHost("127.0.0.1", 8888);
HttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

通过加入上面的代码以后Fiddler确实可以捕捉到请求,但这段代码的侵入性太大,没有达到我们的预期。于是就在Apache官网查资料。终于找到一篇非常有用的文章:Chapter 2. Connection management。在HttpClient proxy configuration章节提到了可以通过代码设置使用标准的JRE代理(One can also instruct HttpClient to use the standard JRE proxy selector to obtain proxy information),也就是说可以使用Fiddler官网提到的配置方式。修改代码如下:

DefaultHttpClient httpClient = new DefaultHttpClient();
SystemDefaultRoutePlanner routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault());
httpClient.setRoutePlanner(routePlanner);

 

以上是关于Fiddler如何捕捉DefaultHttpClient的HTTP请求的主要内容,如果未能解决你的问题,请参考以下文章

fiddler捕捉chrome浏览器http请求

Fiddler实践一例

fiddler的使用

fiddler 4 设置代理

Fiddler-断点(After Responses)+修改Get请求的返回值

浅谈HTTPS以及Fiddler抓取HTTPS协议