2013-01-31 46 views
0

我正在创建Web服务以使Android应用程序与服务器通话。 我正在使用Tomcat作为服务器和JAX RS库在传输过程中在Java对象和JSON之间转换数据。 我想要的是能够查看框架正在创建的实际HTTP请求和响应。监控HTTP请求和响应(无网页浏览器)

一个网络浏览器(如Firefox与Firebug)不会这样做,因为我还需要检查Android应用程序生成的请求正文。

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

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

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

+0

Tcp隧道,如[this one](http://www.vakuumverpackt.de/tcptunnel/)可以很好地监控请求和响应。 –

回答

0

我结束了使用Wireshark的有以下过滤器:

http.content_type == “应用/ JSON” || http.accept == “应用/ JSON”

获取内容解码,右键点击你包的JSON部分( “JavaScript对象符号:应用/ JSON”)>复制>字节>打印文本只有

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}我的模式 - 这是请求标头。

<Valve/>元素嵌套在<Context/>,<Host/><Engine/>元素内,您将完成所有设置。