在handler里怎么对request进行解压,并继续交由controller处理?

我用jfinal做的api,需要接收客户端提交的json POST数据,数据是zlib压缩过的,但是没有把"gzip"封装到Content-Encoding里,我在handler里用Inflater把request用InputStream的方式解压出来,但是不知道怎么把解压完的InputStream重新封到request里交给controller处理?如果直接在controller里处理的话,貌似框架会提前把request给处理成乱码。

我想知道框架处理request的时候,会处理gzip解压吗?如果我在request头里加上Content-Encoding,是不是能给解压?(客户端要求不能修改,只能动服务端了)




评论区

JFinal

2017-05-05 13:17

jfinal 没有处理过对请求的压缩解解,如果是 http请求,tomcat、jetty 会自动解压。

如果你自行将数据压缩并走 http,那么,你需要做个 Handler,在里面解压,然后再创建一个新的 HttpServletRequest 对象,并将解析好的数据放进去

然后用这个新的 request 对象代替老的,只需要在 Handler.handle 方法中调用:
next.handel(target, 新的request对象, response)
即可

wyntergreg

2017-05-05 14:08

@JFinal 好的波总!我也是这么想的!多谢指导!

热门反馈

扫码入社