postForObject中传入对象进行调用的时候和Feign使用接口调用的时候页面出错显示:
There was an unexpected error (type=Internal Server Error, status=500).
Could not extract response: no suitable HttpMessageConverter found for response type [interface java.util.List] and content type [text/html;charset=utf-8]
原因:HTTP消息转换器HttpMessageConverter缺少MIME Type,也就是说HTTP在把输出结果传送到客户端的时候,客户端必须启动适当的应用程序来处理这个输出文档,这可以通过多种MIME(多功能网际邮件扩充协议)Type来完成。
创建类WxMappingJackson2HttpMessageConverter继承自MappingJackson2HttpMessageConverter,代码如下:
public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
public WxMappingJackson2HttpMessageConverter() {
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.TEXT_PLAIN);
mediaTypes.add(MediaType.TEXT_HTML); //加入text/html类型的支持
setSupportedMediaTypes(mediaTypes);// tag6
}
}
1、Feign中使用修改配置bean,代码如下:
@Configuration
public class ConfigBean
{
@Bean
public Decoder feignDecoder() {
return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter()));
}
public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new WxMappingJackson2HttpMessageConverter());
return new ObjectFactory<HttpMessageConverters>() {
@Override
public HttpMessageConverters getObject() throws BeansException {
return httpMessageConverters;
}
};
}
}
2、RestTemplate的配置,代码如下:
@Configuration public class ConfigBean { @Bean @LoadBalanced public RestTemplate getRestTemplate() { RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter()); return restTemplate; }
}