如果使用了springmvc @requestBody 直接就可以获得。有时候希望在拦截器得到,就显得有些无能为力。
使用流的方式获取提交的整个字符串,然后转换json就可以解决啦。记录下代码
public static String getRequestJson(HttpServletRequest request) {
boolean isGetRequest = request.getMethod().toLowerCase().equals("get");
try {
if (isGetRequest) {
return new String(request.getQueryString().getBytes(
"ISO-8859-1"), "UTF-8").replaceAll("%22", "\"");
}
int contentLength = request.getContentLength();
if (contentLength < 0) {
return null;
}
byte buffer[] = new byte[contentLength];
for (int i = 0; i < contentLength;) {
int readlen = request.getInputStream().read(buffer, i,
contentLength - i);
if (readlen == -1) {
break;
}
i += readlen;
}
return new String(buffer, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}