springboot @RequestBody 接收字符串

2022-09-09 14:18:36

前言

  • springboot 2.1.1.RELEASE

@RequestBody 接收字符串

@RequestMapping(method={RequestMethod.POST})publicResultEntityform1(@RequestBodyString requestBody)throwsUnsupportedEncodingException{
		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";
	}
  • 作者:sayyy
  • 原文链接:https://sayyy.blog.csdn.net/article/details/117457645
    更新时间:2022-09-09 14:18:36