如何调试通过线路的所有内容(http)

Rol*_*and 2 java debugging glassfish glassfish-4

我正在尝试在Glassfish 4中调试一些Rest服务,我想确切地看到通过线路发送的内容(HTTP连接).有没有办法让Glassfish打印出来?

我的项目使用Apache HTTP Client,我知道可以在那里配置它,但我无法使用我们的日志框架(java.util.logging).

编辑:或者有没有办法调试泽西岛,将打印出这个信息?

Eri*_* B. 8

您没有指定是否可以控制客户端/前端,或者是否只是在后端.

一些直接的想法浮现在脑海中:

  1. 使用像WireShark这样的数据包嗅探器/分析器(如已建议的那样).效果很好,唯一的问题是可能产生的数据远远超过您真正希望查看/分析的数据.

  2. 使用像CharlesFiddler这样的代理.这些可以配置为显示/记录您想要/需要的数据.缺点是它们是代理(即:必须在您的连接中间),如果您将它放在服务器前面,这可能会导致配置困难.通常在客户端更容易配置,只需通过它推送客户端流量.Fiddler是免费的,但只有基于Windows的版本(适用于Mac和Linux的alpha版本).查尔斯有一个试用版,或者是50美元(如果内存服务).我也不知道Fiddler和/或Charles是否会以无头模式运行.

  3. 设置您自己的Http代理服务器并通过那里记录所有内容.不是真正理想的解决方案,但也是一个选择.

  4. 过滤器添加到您的应用程序登录/注销所有的HTTP数据的到来,但得到棘手/凌乱以及传入的HTTP请求主体是单一的读,所以他们需要被缓存多次读取/访问(见HTTP Servlet中的请求输阅读一次后,POST主体的参数/sf/answers/1199047951/为这个问题提出了一个很好的解决方案)