如何在Java中打印/获取传入HTTP POST请求的有效负载(带套接字)

时间:2014-11-14 19:04:22

标签: java sockets http http-post inputstream

关于安全软件的课程,我创建了一个小型的中间人代理。 我已经到了拦截关键信息的地步。此消息是HTTP POST请求,要捕获的标志位于有效负载中。

e.g。

POST http://someurl.com/index.php HTTP/1.1
Origin: null
User-Agent: Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.7 Safari/534.34
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Length: 37
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
Accept-Encoding: gzip
Accept-Language: en-US, *
Host: someurl.com

所以有效载荷,一个37字节的标志,显然在那里,但是当我打印它时,没有任何东西出来(如你所见)。

您将使用什么代码来打印有效负载,因为我知道我正在使用Java.net套接字(即,有一个输入流可以做任何事情。)目前我附加了一个BufferedReader打印所有行,但是当我继续打印来自流的任何东西,即使是空的,我仍然没有得到任何输出。

我已经搜索了一段时间但却找不到任何有用的东西。可能有一个非常简单的解决方案,我似乎无法想出来。

由于

1 个答案:

答案 0 :(得分:1)

解决。我做错了是读取一行而不是读取37个字节。因为这是一个连接保持活动流,所以流从未关闭,因此'readline'方法一直等待着。

https://community.oracle.com/thread/1691291

中讨论过