リクエストをフィルタリングしたり、変更したりできるコードを開発しようとしています。プロキシはリクエストを正しくインターセプトし、たとえば正しい Uri を表示できます。ただし、http パッケージの内容を読み取ることができません。実際には、request.content () です。ReadableBytes () 関数は 0 を返します。
コードの下:
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withAddress(new InetSocketAddress("localhost", 8080))
.withTransparent(true)
.withFiltersSource(new HttpFiltersSourceAdapter() {
@Override
public int getMaximumRequestBufferSizeInBytes() {
return 512 * 1024;
}
@Override
public int getMaximumResponseBufferSizeInBytes() {
return 50 * 1024 * 1024;
}
public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
return new HttpFiltersAdapter(originalRequest) {
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
FullHttpRequest request = (FullHttpRequest) httpObject;
CompositeByteBuf contentBuf = (CompositeByteBuf) request.content();
System.out.println(request.getUri());
System.out.println(request.content().readableBytes());
問題は、なぜリクエストの本文を読めないのかということです。