我要做出一些API调用使用HttpURLConnection服务器。但请求都没有成功,返回:

<error>
  <http_status>400 Bad Request</http_status>
  <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
</error>

所以,我要检查“真正”的内容是什么正被发送到服务器。通过真实内容我的意思是精确的HTTP请求。

任何想法如何,我可以看到这个?

修改 基于第一答案,在这里我要澄清我的问题:我想避免使用外部程序,如HTTP嗅探器或任何东西,我希望有一个功能或属性或任何持有我要找的信息

如果不是的情况下,没有人知道,如果该信息可以手动重建(例如通过调用一些功能等getRequestMethod(),等等)

我面临这个问题还挺往往使得它的价值,建立这样的功能自己的努力。只需要知道如何:)

有帮助吗?

解决方案

可以通过实现与java.logging把HttpURLConnection的在调试模式

-Djava.util.logging.config.file=logging.properties

和放入logging.properties(默认在JRE_HOME \ lib中)以下属性

sun.net.www.protocol.http.HttpURLConnection.level = ALL

其他提示

tcpdump的工作,但它可能很难让它做你想要什么。 NetCat的是更加人性化(这里的项目页面: http://netcat.sourceforge.net/ - 最Unix平台已经包括它)。

nc -l 9999

此将侦听TCP端口9999上,并且当一个HTTP客户端连接,它会打印出请求的全文。

使用类似tcpdump的,它可以转储由计算机发出或接收到的实际的网络分组。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top