微信小程序后端报错:响应头中的 Content-Type 是 text/plain。

之前项目一般是使用 HttpClient 进行 api 调用。最近突然想试试 spring 自家封装的 RestTemplate,

   //利用 Spring 的 RestTemplate 类向微信 API 发送 GET 请求获取 session_key
    private String getSessionKey(String code) {
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code";
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(new WxMappingJackson2HttpMessageConverter());
        Map<String, String> response = restTemplate.getForObject(url, Map.class);
        return response.get("session_key");
    }

没想到第一个小程序服务端获取 openid 的请求直接就翻车了,异常如下:

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

解决方法:替代Feign的解码器,使json解析器可以解析[text/plain]的数据

创建一个WxMappingJackson2HttpMessageConverter类,继承MappingJackson2HttpMessageConverter。并重写构造方法

public class WxMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
    public WxMappingJackson2HttpMessageConverter(){
        List<MediaType> mediaTypes = new ArrayList<>();
        mediaTypes.add(MediaType.TEXT_PLAIN);
        setSupportedMediaTypes(mediaTypes);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值