场景
因为要对接其他服务的几个接口,不知道什么原因,这几个接口返回的content-type都是各种类型,如text/html、text/plain,就是没有配置成application/json,因此解析的时候总是报找不到解析器的错误。
解决办法:
首先需要如下配置一下解析器
public class FeignConfig {
@Bean
public Decoder feignDecoder() {
return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter()));
}
public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
jsonConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON_UTF8,
MediaType.APPLICATION_FORM_URLENCODED, MediaType.TEXT_PLAIN, MediaType.TEXT_HTML));
HttpMessageConverters httpMessageConverters = new HttpMessageConverters(jsonConverter);
return () -> httpMessageConverters;
}
}
然后在指定的feign配置里面指定这个feignConfig。
@FeignClient(name = "${feign.name}", url = "${feign.host}", configuration = FeignConfig.class)
然后这个feignclient下面的碰到上述哪些content type这些就可以解析成功了。