6
回答
request 里面 如何 取出来 application/json 格式的数据
终于搞明白,存储TCO原来是这样算的>>>   
如题,不知道 数据 被封装到哪里去了,找不到 ,用 SpringMVC 的 @RequestBody 倒是可以直接取出来 ,但是 除却这个方法 ,数据被封装到哪里去了!
举报
S沐大大
发帖于11个月前 6回/2K+阅
看看你Controller方法的参数是不是有RequestParam或者RequestBody注解,把那个参数去掉,方法只留HttpServletRequest作为参数试试
--- 共有 1 条评论 ---
S沐大大好吧,确实 是这么个原理 ,我本来 配置拦截器 ,想 在 请求返回 之后 记录 用户行为 以及参数 ,像你说的 request里面的流已经被 spring读取过了, 奇怪了 ,spring 读取流 还会把 流 关闭的,我以为 是一直存在的 11个月前 回复

https://my.oschina.net/u/2312022/blog/743014

拦截器里面很明显取得出来

你要懂得数据的流向

--- 共有 5 条评论 ---
S沐大大回复 @求是科技 : 恩恩 ,是这个 意思 ,我在进入 requestbody之前 获取到参数了 11个月前 回复
求是科技回复 @S沐大大 : 我发给你的网址,你看了没?请求的所有数据都在HttpServletRequest request中啊,下一步才封装到@responseBody里面啊 11个月前 回复
S沐大大回复 @求是科技 : 找不到 前台 传过来的数据 在哪 ,你可以 自己模拟 一下 application/json 格式的 ,数据是传过来了,用 @requestBody 能直接 解析到,但是 不用这个属性 ,就 不知道数据 放在哪了 11个月前 回复
求是科技回复 @S沐大大 : https://my.oschina.net/u/2312022/blog/744442 request里面有所有的参数数据 11个月前 回复
S沐大大我就是想在 HandlerInterceptorAdapter 里面 去 ,但是 找不到 传输过来的数据 封装到哪里去了 ,取不出来 11个月前 回复
Spring mvc 处理@requestBody 也是通过调用getInputStream的,然后根据不同的content type调用不同的messageconverter的。你那报Stream closed应该是spring已经读取过输入流了。
public class RequestUtils { public static JSONObject jsonFromHttpServlet(HttpServletRequest request){ // 将资料解码  String reqBody = null; try { // 读取请求内容  BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder(); while((line = br.readLine())!=null){
                    sb.append(line);
                }

            reqBody = sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } return (JSONObject) JSONObject.parse(reqBody);

    }
}
--- 共有 2 条评论 ---
whtoo你是不是 自己写了 filter 如果是 你要在filter里面 wrapper httpservletrequest 11个月前 回复
S沐大大取不出来,sb 里面 是空的 11个月前 回复
顶部