当前位置: 代码迷 >> 综合 >> 常见异常:No converter for XXX with preset Content-Type ‘applicationoctet-stream
  详细解决方案

常见异常:No converter for XXX with preset Content-Type ‘applicationoctet-stream

热度:9   发布时间:2024-01-17 13:58:26.0

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

  相关解决方案