1. 问题
今天使用openFeign
对接中石油API的时候发现接口返回值后面总是追加{"d":null}
导致接口无法正常解析。
2. 解决方案
翻阅资料得知是因为 request的header的content-type设置成application/json
导致的,将其修改为 text/plain; charset=utf-8
即可。
这样修改完之后又遇到新问题
Could not write request: no suitable HttpMessageConverter found for request type [com.alibaba.fastjson.JSONObject] and content type [text/plain;charset=utf-8]
网页返回无法解析,这个时候我们就需要重写HttpMessageConverter
的处理方法,代码如下
package com.healai.mentaleapexternal.config;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import java.util.Collections;
/**
* <p>
* FeignConfig - 配置返回体解析
* </p>
*
* @author JiuyeXD
* @version 1.0
* @since 2023/8/17
*/
@Component
public class FeignConfig {
/**
* Could not write request: no suitable HttpMessageConverter found for request type [com.alibaba.fastjson.JSONObject] and content type [text/plain;charset=utf-8]
*/
@Bean
public MappingJackson2HttpMessageConverter customMappingJackson2HttpMessageConverter() {
return new CustomMappingJackson2HttpMessageConverter();
}
static class CustomMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
public CustomMappingJackson2HttpMessageConverter() {
setSupportedMediaTypes(Collections.singletonList(MediaType.TEXT_PLAIN));
}
}
}
至此问题成功得到解决