美文网首页
如何获取@ResponseBody后的 response响应值

如何获取@ResponseBody后的 response响应值

作者: 柠檬冰块 | 来源:发表于2019-06-18 18:03 被阅读0次

spring mvc项目的拦截器通过注解@ResponseBody如何得到http POST响应数据?

使用org.springframework.web.util.ContentCachingResponseWrapper方法

场景:

controller使用了@ResponseBody注解,在拦截器中获取Response数据,在响应前拿到数据进行业务逻辑处理。

1,具体方法

public static String readPostJsonData(HttpServletResponse response) throws IOException {

        if (response instanceof ContentCachingResponseWrapper) {

        ContentCachingResponseWrapper responseWrapper = (ContentCachingResponseWrapper) response;

            int contentLenth = ((ContentCachingResponseWrapper) response).getContentSize();

            if (contentLenth <= 0) {

                return null;

            }

            byte[] bytes = new byte[contentLenth];

            InputStream is = responseWrapper.getContentInputStream();

            for (int index = 0; index < contentLenth; index++) {

                int value = is.read();

                if (value == -1) {

//                is.reset();

                    break;

                }

                bytes[index] = (byte) value;

            }

            responseWrapper.getContentAsByteArray();//这里是为了测试

            String data = new String(bytes);

            System.out.println("http util .........data:" + data);

            return data;

        }

        System.out.println("http util no data in request body");

        return "";

    }

2.Controller

3,在postHandle中调用readPostJsonData方法获取response响应值

相关文章

网友评论

      本文标题:如何获取@ResponseBody后的 response响应值

      本文链接:https://www.haomeiwen.com/subject/lrqqqctx.html