2020-12-09 @RequestBody 接收String 报xxx: Content type ‘text/xml;charset=UTF-8‘ not supported

前言

最近做微信小程序支付(JSAPI支付),支付回调采用流读取方式读取回调信息,但为简便,可以通过@RequestBody直接接收字
符串,在demo中测试可以,但在项目中不行(报HttpMediaTypeNotSupportedException: Content type ‘text/xml;charset=UTF-8’
not supported错),因此考虑是不是消息转换器的问题。


参数解析流程

学习 - 请求参数解析流程


缺失消息转换器
  • demo中

原始

  • 项目中

在这里插入图片描述


思考

发现是少了2个StringHttpMessageConverter,我tiu,然后我尼玛直接在项目中MvcConfig中主动添加这个消息转换器

在这里插入图片描述

结果最后还是没有StringHttpMessageConverter转换器
接着查看该方法被调用处

在这里插入图片描述
在这里插入图片描述

断点查看

在这里插入图片描述

发现在执行extendMessageConverters方法后StringHttpMessageConverter就都没了
查看调用处

在这里插入图片描述

进入方法查看

在这里插入图片描述
在这里插入图片描述

这里就会便利所有的WebMvcConfigurer,并执行方法

在这里插入图片描述

此处突然发现项目中MvcConfig也有重写该方法,我tiu,直接尼玛点过去

在这里插入图片描述

我笑了,原来是同事在这里移除了这类转换器,我说尼玛怎么demo和项目不一样


乌龙

其实是项目中将StringHttpMessageConverter移除了,才导致少了这个转换器- - 。
不过最终还是了解到了Spring MVC是怎么解析参数的了!!!害- -。
还有就是Content type ‘xxx’ not supported问题就是已存在消息转换器不支持这种Content-Type。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值