首页 > 解决方案 > 使用代理读取 FullHttpRequest 请求内容时出现问题

问题描述

我正在尝试开发可以过滤请求、修改请求等的代码。代理正确拦截请求并能够显示正确的 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());

所以问题是:为什么我无法阅读请求的正文?

标签: httpproxynettylittle-proxy

解决方案


推荐阅读