拦截器获取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)
            {

            }
        };
    }
}

拦截器

相关推荐
ipooipoo118840 分钟前
动态住宅IP的定义、核心优势与技术场景应用
网络·网络协议·tcp/ip
祁鱼鱼鱼鱼鱼1 小时前
Keepalived实验环境设定
linux·服务器·网络
滴水之功1 小时前
OpenWrt的WAN和LAN的切换
linux·网络·openwrt
莹莹学编程—成长记2 小时前
预备知识socket
网络
winfreedoms3 小时前
java-网络编程——黑马程序员学习笔记
java·网络·学习
零基础的修炼3 小时前
Linux网络---网络层
运维·服务器·网络
开开心心就好3 小时前
键盘改键工具免安装,自定义键位屏蔽误触
java·网络·windows·随机森林·计算机外设·电脑·excel
旖旎夜光3 小时前
Linux(13)(上)
linux·网络
郝学胜-神的一滴4 小时前
深入解析Linux网络编程之bind函数:从基础到实践的艺术
linux·服务器·网络·c++·websocket·程序人生
pythonchashaoyou4 小时前
静态住宅ip是什么,静态住宅IP选型全解
网络·网络协议·tcp/ip