首页 > 其他分享 >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

时间:2023-05-25 09:44:11浏览次数:50  
标签:www charset UTF form supported json Content application Json

问题点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。
/**
 * @description: contentType
 */
export enum ContentTypeEnum {
    // json
    JSON = 'application/json;charset=UTF-8',
    // form-data qs
    FORM_URLENCODED = 'application/x-www-form-urlencoded;charset=UTF-8',
    // form-data  upload
    FORM_DATA = 'multipart/form-data;charset=UTF-8',
}

标签:www,charset,UTF,form,supported,json,Content,application,Json
From: https://www.cnblogs.com/linhan8888/p/17430265.html

相关文章

  • unsupported parameter combination 解决办法
    colorSpace=CGColorSpaceCreateDeviceRGB();//  CGBitmapInfobitmapInfo=kCGBitmapByteOrder32Little|kCGImageAlphaNoneSkipFirst;//  CGBitmapInfobitmapInfo=kCGBitmapByteOrder32Little|kCGImageAlphaPremultipliedFirst;     //error  CGBit......
  • set character_set_database=utf8;set character_set_server=utf8;
    D:\mysql-5.6.24-win32\bin\mysql-urootWelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis55Serverversion:5.6.24MySQLCommunityServer(GPL)Copyright(c)2000,2015,Oracleand/oritsaffiliates.......
  • .NET UTF-8与UTF-8-BOM编码
    MSDoc:UTF8Encoding类BOM与错误检测参数成员BOM错误检测Encoding.UTF8是无(替换回退)UTF8Encoding.UTF8Encoding()否无(替换回退)UTF8Encoding.UTF8Encoding(Boolean)可配置无(替换回退)UTF8Encoding.UTF8Encoding(Boolean,Boolean)可配置可配置......
  • IDEA 编码格式设置 UTF-8
    IDEA编码格式设置UTF-81.文件编码设置为UTF-82.编译编码设置为utf-83.虚拟机自定义设置(一般可不设置) 1.文件编码设置为UTF-8Editor>FileEncodings 2.编译编码设置为utf-8Build,Execution,Deployment>Complier>JavaComplier按图中设置:-encodingutf-8 3.......
  • 关于Nmap扫描时报错:‘utf8’ codec can’t decode byte 0xc1 in position 0:invalid
    Nmap的官方下载地址:https://nmap.org/download.html参考文献:https://blog.csdn.net/weixin_45451139/article/details/105289026https://blog.csdn.net/qq_39855437/article/details/126541352我的用户名是中文,要改用户名。荣耀电脑改不了,而且只有这一个用户。于是我建了一......
  • C#语音播报报:Speech is not supported on this platform.错误
    在C#进行文字转语音时,运行报System.PlatformNotSupportedException:“Speechisnotsupportedonthisplatform.”错误,运行的代码如下:usingSystem;usingSystem.Speech.Synthesis;namespaceConsoleApp3{internalclassProgram{staticvoidMain(string[]ar......
  • 把流中的字符串转换为 UTF 格式
    unitUnit1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls;type TForm1=class(TForm)  Button1:TButton;  Memo1:TMemo;  procedureButton1Click(Sender:TObject);  pr......
  • axios 发送 form-data 请求和 x-www-form-urlencoded请求以及相关问题
    问题notsupported{"msg":"Contenttype'multipart/form-data;boundary=--------------------------714795402464721152224475;charset=UTF-8'notsupported","code":500}这个是因为form-data请求没有被后端支持,联系后端确认请求格式;关......
  • 如何在Ubuntu 22.04上安装Linux 内核、更新内核以后出现:nas挂不上、nas挂载失败、moun
    按照如下链接安装Linux内核:如何在Ubuntu22.04上安装Linux内核6.0?,内核安装确实成功了,但是我在挂载nas的时候会出现如下错误:mounterror:cifsfilesystemnotsupportedbythesystemmounterror(19):NosuchdeviceRefertothemount.cifs(8)manualpage(e.g.manmoun......
  • ASCII,Latin1,Unicode,UTF-8与GBK编码的区别
    3.Unicode编码世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。可以想象,如果有一种编码,将世......