监控HTTP请求和响应(无Web浏览器)

时间:2013-01-31 16:00:26

标签: web-services http tomcat response monitoring

我正在创建Web服务,以使Android应用与服务器通信。 我在服务器上使用Tomcat,在传输过程中使用JAX RS lib在Java对象和JSON之间转换数据。 我想要的是能够查看框架正在创建的实际HTTP请求和响应。

网页浏览器(如Firefox with Firebug)不会这样做,因为我还需要检查Android应用生成的请求主体。

使用Servlet API,我可以拦截并使用过滤器获取请求数据,但不是在框架编写之后的响应(我相信)。

Wireshark可能是一个解决方案(我现在正在尝试),但似乎有点太多了。我需要担心正确过滤我的消息,并且还没弄清楚如何正确格式化我的HTTP消息(纯文本没有hexa内容)。

我想知道是否有更简单的方法可以从我的应用程序或tomcat中执行此操作。

2 个答案:

答案 0 :(得分:0)

尝试Tomcat的AccessLogValve。您可以将其配置为记录传入的请求标头以及传出的响应标头。这是一个例子:

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_headers_access_log." suffix=".txt"
           pattern="%t &quot;%r&quot; %s ||| %{Content-Length}o ||| %{User-Agent}i" />

注意%{xxx} o模式 - 即响应标头。您可能希望将其用作%{X-JSON} o。另请注意%{xxx} i模式 - 即请求标头。

<Valve/>元素嵌套在<Context/><Host/><Engine/>元素中,您将全部设置完毕。

答案 1 :(得分:0)

我最终使用Wireshark和以下过滤器:

  

http.content_type ==“application / json”|| http.accept ==   “应用程序/ JSON”

要解码内容,请右键单击包的json部分(“JavaScript Object Notation:application / json”)&gt;复制&gt;字节&gt;仅可打印文本