0

リクエストをフィルタリングしたり、変更したりできるコードを開発しようとしています。プロキシはリクエストを正しくインターセプトし、たとえば正しい 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());

問題は、なぜリクエストの本文を読めないのかということです。

4

0 に答える 0