Closed weirenren closed 5 years ago
也有这样的需求。match请求参数和请求体里面的判断放在一起,来改响应
你是问这个项目的还是netty的http模块啊,这个项目的话可以直接通过HttpProxyInterceptPipeline
访问到request和response
pipeline再获取request的时候,是HttpRequest,不是FullHttpRequest;只能获取到Http请求头,不能获取到请求体,需要根据请求头和请求体进行match,来改响应
这个目前没有,需要的话可以参考下FullResponseIntercept
,或者在Intercept手动存下每一次的HttpContent直到读取到LastHttpContent再去解析
请求我加了aggregator编码,直接解析FullHttpRequest,正在改,后面不懂得再向你咨询,多谢!
HttpProxyServerHandle->handleProxyData(Channel channel, Object msg, boolean isHttp) 确认了msg是FullHttpRequest对象(能够打印出来http请求头和请求体)
HttpProxyClientHandle->channelRead(ChannelHandlerContext ctx, Object msg) {... HttpProxyInterceptPipeline interceptPipeline = ((HttpProxyServerHandle) clientChannel.pipeline().get("serverHandle")).getInterceptPipeline();
FullHttpRequest fullHttpRequest = (FullHttpRequest)interceptPipeline.getHttpRequest(); //上面这行代码,我调试使用,fullHttpRequest的只能拿到请求头,不能拿到请求体 //不知道为什么,能帮助解读下吗? ...
}
作者可否实现 “根据请求头和请求体进行match,来改响应” 的功能?
嗯 我看看能不能提供一个FullRequestIntercept
Thanks!
现在暂时绕了一下,从beforereqest里截取了请求体,然后把请求体中要过滤的内容放到请求头中,然后在match中进行请求头的判断。 期望后期FullRequestIntercept部分的check in,多谢大神!
@xidianzxm 已经提交了https://github.com/monkeyWie/proxyee/commit/3240814eb9211615710ad940e5d1a26bf1eb8735
可以配合FullRequestIntercept+FullResponseIntercept一起使用
楼主,请教下netty中,异步请求下返回的response如何匹配到那一个request对象呢,这块有什么好的方法吗?我的目的是当response返回后,需要找到对应的request对象,从而生一个包含request和response相关HTTP数据的新的对象。