当前位置: 首页 > news >正文

openfeign返回消息报错.UnknownContentTypeException

1. springcloud项目使用openfeign报错
org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [com.yl.base.Result<java.util.List<com.yl.entity.LabelConfig>>]  and content type [application/json]at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:126)at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:57)at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:61)at feign.AsyncResponseHandler.decode(AsyncResponseHandler.java:115)at feign.AsyncResponseHandler.handleResponse(AsyncResponseHandler.java:87)at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138)

pom.xml 依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>3.0.7</version>
</dependency>
2. 分析
项目启动,调用接口,有时报错,重启后调用相同接口,有时好,有时报错,分析发现是feign接口返回值反序列化时无法处理,自定义处理后正常了
3. 自定义返回值解析器
import com.alibaba.fastjson.JSON;
import feign.FeignException;
import feign.Response;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.support.SpringDecoder;import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
/*** Feign接口响应数据处理*/
public class FeignResponseInterceptor extends SpringDecoder {public FeignResponseInterceptor(ObjectFactory<HttpMessageConverters> messageConverters) {super(messageConverters);}@Overridepublic Object decode(final Response response, Type type) throws IOException, FeignException {Response.Body body = response.body();String bodyString = IOUtils.toString(body.asReader(StandardCharsets.UTF_8));//响应日志// 此处有bug,有时没问题,有时报错// org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [com.yl.base.Result<java.util.List<com.yl.entity.LabelConfig>>]  and content type [application/json]
//        Object o = super.decode(response.toBuilder().body(bodyString, StandardCharsets.UTF_8).build(), type);//改为fastjson反序列化Object o = JSON.parseObject(bodyString).toJavaObject(type);return o;}
}

配置FeignResponseInterceptor

import feign.codec.Decoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import java.util.ArrayList;
import java.util.List;
@Configuration
public class FeignConfig {@Primary@Beanpublic Decoder decoder() {MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();List<MediaType> supportedMediaTypes = new ArrayList<>();supportedMediaTypes.add(MediaType.APPLICATION_JSON);jackson2HttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);ObjectFactory objectFactory = () -> new HttpMessageConverters(jackson2HttpMessageConverter);return new FeignResponseInterceptor(objectFactory);}
}
http://www.lryc.cn/news/172941.html

相关文章:

  • [Linux入门]---Linux项目自动化构建工具-make/Makefile
  • [Python进阶] 程序打包之Pyinstaller参数介绍
  • Python中如何判断列表中的元素,是否在一段文本中??
  • spark Structured报错解决
  • Matter 协议系列:发现
  • Oracle 12c Docker镜像配置SSL
  • 版本控制系统git:一文了解git,以及它在生活中的应用,网站维护git代码,图导,自动化部署代码
  • uqrcode+uni-app 微信小程序生成二维码
  • 从零开始的 MyBatis 拦截器之旅:实战经验分享
  • 网络编程day05(IO多路复用)
  • 人声分离网站,帮你快速提取视频中的人声和背景音乐
  • 计算机网络常见问题
  • 上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技
  • 无重复字符的最长子串 - 力扣(LeetCode)
  • 企业行政许可的种类有哪些?
  • Flink--4、DateStream API(执行环境、源算子、基本转换算子)
  • #循循渐进学51单片机#指针基础与1602液晶的初步认识#not.11
  • Lua学习笔记:探究package
  • 【面试经典150 | 双指针】三数之和
  • 现代卷积网络实战系列3:PyTorch从零构建AlexNet训练MNIST数据集
  • Django系列:Django应用(app)的创建与配置
  • Linux查看程序和动态库依赖的动态库
  • vue3 无法使用pnpm安装依赖 或 Cannot find module preinstall.js
  • C/C++连接数据库,包含完整代码。
  • AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析
  • C语言 coding style
  • Python办公自动化之PDF
  • 【每日一题Day331】LC2560打家劫舍 IV | 二分查找 + 贪心
  • JVM 参数详解
  • uni-app获取地理位置