0

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

Web 浏览器(例如带有 Firebug 的 Firefox)不会这样做,因为我还需要检查 Android 应用程序生成的请求正文。

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

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

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

4

2 回答 2

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/>在 a或元素中<Context/>,您将全部设置好。<Host/><Engine/>

于 2013-01-31T16:49:09.543 回答
0

我最终使用了带有以下过滤器的 Wireshark:

http.content_type == "应用程序/json" || http.accept == "应用程序/json"

要解码内容,请右键单击包的 json 部分(“JavaScript Object Notation: application/json”)> Copy > Bytes > Printable text only

于 2013-03-13T11:17:17.167 回答