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参数,求解?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
已解决了,是自己重复读取了 request.getInputStream(); 的内容导致第二次取的是空的内容,忘记了Java中输入流不可重复读,######兄弟那你是什么解决的呢######读一次然后保存起来,因为inputStream不支持重复读