私はGitHub:LittleProxyと表示された簡単な例に続き、clientToProxyRequest(HttpObject httpObject)
の方法に以下を追加しました。Java LittleProxy(Nettyの上にある):POST Bodyデータにアクセスするには?
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では、これら2つのヘッダーのみがここで関連します。これは、POSTリクエストだとコンテンツがあります...ネッティーAPIドキュメントへHttpPostRequestDecoder
を探し
POST http://www.... HTTP/1.1
Content-Length: 522
は有望であると思われるが、私はNotEnoughDataDecoderException
を取得します。 Netty JavaDocに書かれていますが、データの提供方法はわかりません。
このgetMethodは、bodyからすべてのHttpDatasのリストを返します。 チャンクされている場合は、すべてのチャンクがoffer()getMethodを使用して提供されている必要があります。そうでない場合、NotEnoughDataDecoderExceptionが発生します。
実際、これがプロキシのPOSTデータを取得する正しい方法であるかどうかは確かです。