我遵循了GitHub:LittleProxy中显示的简单示例,并在 Method.xml 中添加了以下内容clientToProxyRequest(HttpObject httpObject)
。
public HttpResponse clientToProxyRequest(HttpObject httpObject)
{
if(httpObject instanceof DefaultHttpRequest)
{
DefaultHttpRequest httpRequest = (DefaultHttpRequest)httpObject;
logger.info(httpRequest.getUri());
logger.info(httpRequest.toString());
// How to access the POST Body data?
HttpPostRequestDecoder d = new HttpPostRequestDecoder(httpRequest);
d.getBodyHttpDatas(); //NotEnoughDataDecoderException
}
return null;
}
记录器报告这一点,IMO 只有这两个标题与此处相关。这是一个 POST 请求,并且有内容......
POST http://www.... HTTP/1.1
Content-Length: 522
查看 Netty API 文档HttpPostRequestDecoder
似乎很有希望,但我得到了一个NotEnoughDataDecoderException
. 在Netty JavaDoc中是这样写的,但是我不知道如何提供数据?
此 getMethod 从正文返回所有 HttpDatas 的列表。如果分块,则必须使用 offer() getMethod 提供所有块。如果没有,将引发 NotEnoughDataDecoderException。
事实上,我也不确定这是否是在代理中获取 POST 数据的正确方法。