Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot 出现 Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

SpringBoot 出现 Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

作者头像
全栈程序员站长
发布于 2022-09-18 06:30:59
发布于 2022-09-18 06:30:59
4.7K0
举报

大家好,又见面了,我是你们的朋友全栈君。

问题点1:

如果Content-Type设置为“application/x-www-form-urlencoded;charset=UTF-8”无论是POST请求还是GET请求都是可以通过这种方式成功获取参数,但是如果前端POST请求中的body是Json对象的话,会报上述错误。

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

问题点2:

当前端请求的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字符串。

总结:

前端请求传Json对象则后端使用@RequestParam;

前端请求传Json对象的字符串则后端使用@RequestBody。

本文大部分内容来自:使用SpringBoot做Javaweb时,数据交互遇到的问题

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157768.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是application/x-www-form-urlencoded
它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成application/x-www-form-urlencoded字符串,然后在服务器端自动解码。FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded。
用户8983410
2021/10/08
10K0
@RequestBody和@RequestParam区别
注解@RequestParam接收的参数是来自requestHeader中,即请求头。
chenchenchen
2019/09/03
4.6K0
@RequestBody和@RequestParam区别
RequestParam与RequestBod等参数注解简析
该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded和multipart/form-data编码的内容,例如application/json, application/xml等;
WindCoder
2018/09/19
2.4K0
RequestParam与RequestBod等参数注解简析
一篇文章搞定SpringMVC参数绑定
@PathVariable 是用来获得请求url中的动态参数的,可以将URL中的变量映射到功能处理方法的参数上,其中URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
Java识堂
2019/05/21
1K0
javaWeb传收参数方式总结
有时候,我真会被传参搞得头晕,这样传要怎么接收,那样传又要怎么接收? get可以json吗?什么是json方式提交?等等问题,已困扰我许久 所以,在此想做个总结,整理一下思绪,不再为传收参烦恼!如有错
KEN DO EVERTHING
2019/01/17
2.3K0
Spring之RequestBody的使用姿势小结
对上面几种方式有兴趣的可以看一下这篇博文: SpringMVC之请求参数的获取方式
一灰灰blog
2018/08/07
3.3K0
Spring之RequestBody的使用姿势小结
SpringBoot系列教程web篇之Post请求参数解析姿势汇总 原
首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活;
一灰灰blog
2019/08/30
2.8K0
对于spring mvc中post、get方法获取参数的的几种方式,你了解多少?
get与post两种方式的区别:对于本文主题而言,最显著的区别就是get请求方式参数是在url后,而post请求方式的参数是在request body中。因此两者获取参数的方式也大不一样。
cxuan
2019/07/10
4.3K0
@PathVariable和@RequestBody 和 @Requestparam和HttpServletRequest 的区别
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。//配置url和方法的一个关系*@RequestMapping(“item/{itemId}”)*
知识浅谈
2020/12/01
1.8K0
@PathVariable和@RequestBody  和 @Requestparam和HttpServletRequest 的区别
Okhttp3问题 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
https://blog.csdn.net/Otldan/article/details/73864774
Albert陈凯
2019/03/04
8.7K0
关于Json 与 Request Header 的Content-Type 一些关系。
由于最近遇到关于ashx文件ajax解析参数的问题。查询网上很多资料后,已经解决。
全栈程序员站长
2022/09/28
1.6K0
关于Json 与 Request Header 的Content-Type 一些关系。
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
刘大猫
2024/12/05
5080
@RequestBody和@RequestParam区别
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,默认传递的参数就是application/x-www-form-urlencoded类型)。RequestParam可以接受简单类型的属性,也可以接受对象类型。 实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。
ydymz
2018/09/10
4K0
@RequestBody出现请求415问题
首先之前也遇到过这样的问题,但是稀里糊涂的最后虽然bug修复了,但是不知道是啥原因,今天又遇到了同样的问题。
全栈程序员站长
2022/09/07
1.3K0
org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘multipart/form-data;bounda
最近在做一个图片上传,遇到这了这种情况,在入参 body 中同时传入文件和其它参数信息结果出现如题异常。
知识浅谈
2021/05/10
1.7K0
SpringMVC如何接收application/json内容编码类型的参数?
  3、前端代码如下:(这里必须将JSON对象使用JSON.stringify()转为JSON字符串再传递,否则后台接收不到值)
AI粉嫩特工队
2019/09/10
3.5K0
Spring注解笔记
一、使用postman,测试post请求,出现error,发现原因是content_type类型不对。
liliane
2022/07/17
3300
Axios携带数据发送请求及后端接收方式
因为参数是直接放在请求体(Payload Body)中,所以需要从请求体中拿到数据: 使用@RequestBody注解从请求体中拿到数据,同样也是可以使用对应的实体类或参数接收
十玖八柒
2022/08/01
10.7K1
Axios携带数据发送请求及后端接收方式
补习系列-springboot mime类型处理
MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, 这是HTTP协议中用来定义文档性质及格式的标准。IETF RFC 6838,对HTTP传输内容类型进行了全面定义。 而 IANA(互联网号码分配机构)是负责管理所有标准MIME类型的官方机构。可以在这里)找到所有的标准MIME
美码师
2018/08/27
2.4K0
浅析http请求的content-type及使用场景
在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。
用户8236825
2023/03/27
2.1K0
推荐阅读
相关推荐
什么是application/x-www-form-urlencoded
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档