微信接口开发 Spring boot FeignClient [text/plain]问题解决

错误

今天开发微信公众号接口路遇一坑,报错如下:

Could not extract response: no suitable HttpMessageConverter found for response type [classxxxx] and content type [text/plain]

错误原因

微信虽然接口返回为JSON格式数据但却将数据表示为了[text/plain]导致Feign没有采用JSON解析器来解析,从而无法将响应数据转化为对应的POJO对象;

解决方案

替代Feign的解码器,使json解析器同时解析[text/plain]的数据

// 创建一个新的转换器 解析微信的 [text/plain] 
public class WxMessageConverter extends MappingJackson2HttpMessageConverter {
    public WxMessageConverter(){
        List mediaTypes = new ArrayList<>();
        mediaTypes.add(MediaType.TEXT_PLAIN);
        setSupportedMediaTypes(mediaTypes);
    }
}
注入新的Decoder Feign将自动 替换
// 解决微信返回参数为[text/plain] 无法转化为json
@Bean
public Decoder feignDecoder(){
    WxMessageConverter wxConverter = new WxMessageConverter();
    ObjectFactory objectFactory = () -> new HttpMessageConverters(wxConverter);
    return new SpringDecoder(objectFactory);
}

解决完成

你可能感兴趣的:(微信)