博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot——[Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]解决方案
阅读量:2036 次
发布时间:2019-04-28

本文共 1903 字,大约阅读时间需要 6 分钟。

问题描述

2020-02-13 19:32:04.322  WARN 109508 --- [p-nio-80-exec-4] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

自定义返回JSON: 

前端代码

$.ajax({    url:"khRyPfGsController.do?saveRows",    type:"post",    data:JSON.stringify(result),    dataType:"json",    success:function(data){        tip(data.msg);        if(data.success){            reloadTable();        }    }})

后端代码

@RequestMapping(params = "saveRows")@ResponseBodypublic AjaxJson saveRows(@RequestBody List
> list) {    //省略}

问题分析

如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”

无论是POST请求还是GET请求都是可以通过@RequestParam成功获取参数

但是如果前端POST请求中的body是Json对象的话,会报错误

[Content type 'application/json' not supported]

反之:

[Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]

请求中传JSON时设置的Content-Type 如果是application/json或者text/json时,JAVA中request.getParameter("")怎么也接收不到数据。这是因为,Tomcat的HttpServletRequest类的实现类为org.apache.catalina.connector.Request(实际上是org.apache.coyote.Request)。

当前端请求的Content-Type是Json时,可以用@RequestBody这个注解来解决。

@RequestParam 底层是通过request.getParameter方式获得参数的,换句话说,@RequestParam 和request.getParameter是同一回事。因为使用request.getParameter()方式获取参数,可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。所以,@RequestParam可以处理get 方式中queryString的值,也可以处理post方式中 body data的值。

@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST。

@RequestBody接受的是一个json对象的字符串,而不是Json对象,在请求时往往都是Json对象,用JSON.stringify(data)的方式就能将对象变成json字符串。

解决方案

JS代码加上contentType:"application/json"即可

$.ajax({    url:"khRyPfGsController.do?saveRows",    type:"post",    data:JSON.stringify(result),    contentType:"application/json",    dataType:"json",    success:function(data){        tip(data.msg);        if(data.success){            reloadTable();        }    }})

 

参考文章

转载地址:http://orgaf.baihongyu.com/

你可能感兴趣的文章
在PPT和Word中添加带有语法高亮的代码块
查看>>
iOS5:[UIDevice uniqueIdentifier]的替代方案
查看>>
四步轻松实现用Visio画UML类图
查看>>
CocoaTouch框架一览表
查看>>
Android anotations试用
查看>>
【Android框架进阶〖00〗】ThinkAndroid注解机制
查看>>
Associated Objects
查看>>
一个完整的Android ListView+网络接口读取+JSON处理的Demo
查看>>
ios 蓝牙
查看>>
iOS 类似Android.9图片拉伸
查看>>
ReactiveCocoa
查看>>
展现学习能力,可能比展现能力更重要
查看>>
一些资料
查看>>
class dump
查看>>
使用Objective-C的文档生成工具:appledoc
查看>>
Appledoc 安装
查看>>
class-dump获取部分iOS app头文件信息
查看>>
RSSI与LQI、接收距离d之间的关系(转)
查看>>
Method Swizzling
查看>>
MFC中的HOOK编程
查看>>