拦截器获取http的body后HttpServletRequest不可重复读

java 复制代码
public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
{
    private final byte[] body;

    public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException
    {
        super(request);
        request.setCharacterEncoding(Constants.UTF8);
        response.setCharacterEncoding(Constants.UTF8);

        body = HttpHelper.getBodyString(request).getBytes(Constants.UTF8);
    }

    @Override
    public BufferedReader getReader() throws IOException
    {
        return new BufferedReader(new InputStreamReader(getInputStream()));
    }

    @Override
    public ServletInputStream getInputStream() throws IOException
    {
        final ByteArrayInputStream bais = new ByteArrayInputStream(body);
        return new ServletInputStream()
        {
            @Override
            public int read() throws IOException
            {
                return bais.read();
            }

            @Override
            public int available() throws IOException
            {
                return body.length;
            }

            @Override
            public boolean isFinished()
            {
                return false;
            }

            @Override
            public boolean isReady()
            {
                return false;
            }

            @Override
            public void setReadListener(ReadListener readListener)
            {

            }
        };
    }
}

拦截器

相关推荐
破碎的南瓜7 分钟前
OSPF笔记
网络·笔记·智能路由器
IsPrisoner18 分钟前
深入分析计算机网络传输层和应用层面试题
网络·学习
德迅云安全杨德俊21 分钟前
应用加速游戏盾的安全作用
网络·安全·游戏·ddos
嶔某34 分钟前
网络:基础概念
linux·服务器·网络·c++
AORO20251 小时前
三防平板搭载2D扫描头:工业数据采集的革新利器
网络·电脑·制造·信息与通信
pk_xz1234561 小时前
社区资源媒体管理系统设计与实现
网络·python·深度学习·算法·数据挖掘·媒体
鸡哥爱技术2 小时前
网工知识——常见路由概念
网络·智能路由器
QYR_113 小时前
防水医用无人机市场报告:现状、趋势与洞察
大数据·网络·市场研究
烟斗与演绎3 小时前
综合实验(4)
网络·网络安全·智能路由器
仙云Q123 小时前
IP协议解析:从寻址到路由
网络