http - 使用代理读取 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());
所以问题是:为什么我无法阅读请求的正文?
解决方案
推荐阅读
- android - 在 Tensorflow 中对检测到的对象执行点击事件
- git - 为什么合并一个“你的编辑器有问题”的分支时会出现错误?
- c - 大学Linux和C课程开发环境
- php - 使用 v-model 时,bootstrap-datepicker 日期从 vue 输入字段中消失
- bash - 包含特定文件并传输到另一个目录的 Tar(或存档)文件夹
- mongodb - Mongo查询具有限制和跳过的多个条件
- reactjs - 使用redux成功提交Formik表单后如何清除表单
- c# - How to make automated image slideshow using imagelist & timer in C#?
- android - 如何在 Glide with Animation 中加载图像
- c# - 在不同的进程中更改控件的背景色/前景色