OpenFeignClient用Object接收text/plain类型的返回报错
content-type text/plain feign
处理部分服务返回Content-Type为text-plain
的情况
有些服务例如微信在返回json字符串时的格式并不是application-json
,而是text-plain
。此时如果使用对象接收可能会报错。
如果报错解决办法有两个,一是直接用字符串接收然后手动反序列化;二是通过在配置类中配置Decoder
来处理text-plain
格式。下面为Decoder
配置方法:
/** * 自定义新的decoder来处理微信返回text plain的返回类型 * @return */@Bean public Decoder feignDecoder(){ ObjectFactory<HttpMessageConverters> messageConverters = new ObjectFactory<HttpMessageConverters>() { @Override public HttpMessageConverters getObject() throws BeansException { return new HttpMessageConverters(new MappingJackson2HttpMessageConverter(){ @Override public void setSupportedMediaTypes(List<MediaType> supportedMediaTypes) { List<MediaType> myType = new ArrayList<>(supportedMediaTypes); myType.add(MediaType.TEXT_PLAIN); super.setSupportedMediaTypes(myType); } }); } }; return new SpringDecoder(messageConverters); }
方案2:
import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.util.ArrayList; import java.util.List; public class MyJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { //fegin接收content-type:text/plain 返回体的解决方案 public MyJackson2HttpMessageConverter(){ List<MediaType> mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.TEXT_PLAIN); setSupportedMediaTypes(mediaTypes); }
@Bean public RequirementClient requirementClient(){ MyJackson2HttpMessageConverter converter =new MyJackson2HttpMessageConverter(); ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(converter); return Feign.builder() .encoder(new JacksonEncoder()) .decoder(new SpringDecoder(objectFactory)) .requestInterceptor(new BasicAuthRequestInterceptor(userName, password, UTF_8)) .target(RequirementClient.class, featureurl); }
https://blog.csdn.net/qq_39107335/article/details/128122780
https://segmentfault.com/a/1190000039427744?utm_source=tag-newest
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2019-02-13 公众号开发之wx-tools+springboot应用实战-音乐爬虫推送[JAVA]
2015-02-13 Java发展的时间表