我正在尝试开发可以过滤请求、修改请求等的代码。代理正确拦截请求并能够显示正确的 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());
所以问题是:为什么我无法阅读请求的正文?