常见异常:No converter for XXX with preset Content-Type ‘application/octet-stream

No converter for XXX with preset Content-Type ‘application/octet-stream;charset=UTF-8‘
在导出excel中返回公共封装类BaseResposne数据报错没有转换器,项目中把返回值改了void
其他原因是如下解决

解决办法
方法一:将FastJson更换为jackson-databind

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.4</version>
</dependency>
<!--
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.75</version>
</dependency>
-->

方法二:为RestTemplate添加HttpMessageConverter

在Spring配置文件中修改

注:这种方式只会注册你列表中有的Http消息转换器,没有的不会进行注册

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <ref bean="formHttpMessageConverter"/>
            <ref bean="fastJsonHttpMessageConverter"/>
        </list>
    </property>
</bean>

<bean id="formHttpMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter">
    <property name="charset" value="utf-8"/>
</bean>

<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
    <property name="defaultCharset" value="utf-8"/>
</bean>

原因
导致这个异常的原因是因为原本项目中使用的是FastJson,而FastJson对应的HttpMessageConverter不会被自动注册,所以无法进行Map到Json的转换。

先来看使用FastJson后RestTemplate中注册的HttpMessageConverter(可以使用RestTemplate的getMessageConverters()获取查看):

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值