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()获取查看):

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐