前言
- springboot 2.1.1.RELEASE
@RequestBody 接收字符串
@RequestMapping(method = {RequestMethod.POST})
public ResultEntity form1(@RequestBody String requestBody) throws UnsupportedEncodingException {
logger.info("================ request body ================");\
logger.info("request body is : {}", requestBody);
}
向接口传送 application/json 格式的数据
客户端调用代码如下:
$.ajax({
url:'http://localhost/api/spd',
data: JSON.stringify({name:'zhangsan', age: 18}),
type:'POST',
contentType: 'application/json',
success:function(result){
console.log(result);
},
error:function(error){
console.log(error);
}
});
服务端执行结果:
00:11:55.972 [http-nio-8020-exec-5] INFO c.c.api.SpdApi - [form1,45] - request body is : {"name":"zhangsan","age":18}
向接口传送 text/plain 格式的数据
客户端调用代码如下:
$.ajax({
url:'http://localhost/api/spd',
data: 'this is a message',
type:'POST',
contentType: 'text/plain',
success:function(result){
console.log(result);
},
error:function(error){
console.log(error);
}
});
服务端执行结果:
23:46:04.953 [http-nio-8020-exec-1] INFO c.c.api.SpdApi - [form1,45] - request body is : 'this is a message'
替代 @RequestBody 的办法
如果不想用 @RequestBody ,可以使用下面的方法:
protected String getRequestBody(HttpServletRequest request) {
try {
BufferedReader reader = request.getReader();
char[] buf = new char[512];
int len = 0;
StringBuffer contentBuffer = new StringBuffer();
while ((len = reader.read(buf)) != -1) {
contentBuffer.append(buf, 0, len);
}
return contentBuffer.toString();
} catch (IOException e) {
e.printStackTrace();
}
return "null";
}