开发者社区 问答 正文

spring mvc HandlerInterceptorAdapter中怎样获?400报错

spring mvc HandlerInterceptorAdapter中怎样获取application/json的数据?? 400 报错 @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
//解释请求数据包
String jsonString = RequestUtil.getJSONString(request);
RequestDto requestDto = RequestUtil.getRequestDto(request);
log.info("客户端请求的数据包==>\n" + jsonString);
//验证客户端签名
if (RequestUtil.verifyRequest(requestDto)){
request.setAttribute("requestDto", requestDto);
return true;
} else {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=UTF-8");
ResponseDto responseDto = new ResponseDto();
responseDto.setHeader(ResponseHeader.getAuthError());
response.getWriter().write(JSON.toJSONString(responseDto));
return false;
}

}

public class RequestUtil{

public static String CHARSET = "UTF-8";

/**
* @详细 
* @param request
* @return 返回JSON数据包
*/
public static String getJSONString(HttpServletRequest request){
String json = "";
try {
ServletInputStream in = request.getInputStream();
String content = IOUtils.toString(in, CHARSET);
json = URLDecoder.decode(content, CHARSET);
json = json.substring(json.indexOf("=") + 1);
} catch (IOException e) {
e.printStackTrace();
}
return json;
}

}

在拦截器中获取不到JSON参数,求解?


展开
收起
爱吃鱼的程序员 2020-06-03 14:39:09 470 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    已解决了,是自己重复读取了 request.getInputStream(); 的内容导致第二次取的是空的内容,忘记了Java中输入流不可重复读,######兄弟那你是什么解决的呢######读一次然后保存起来,因为inputStream不支持重复读

    2020-06-03 17:15:19
    赞同 展开评论
问答分类:
问答标签:
问答地址: