【错误复盘】Could not extract response: no suitable HttpMessageConverter found for response 【xxx】and content type 【text/json;charset=UTF-8】
遇到这个错误是我需要调用一个其他服务的接口获取结构体来封装到自己的接口上去,但是我并不知道具体的类型结构(因为不是我开发的),只能根据postman 去调用看返回体类型去定义。这一路上都一帆风顺。结构体定义完成。启动调用接口报错了。报错正如标题所示。
整体过程是用FeignClient调用的。之前调用外部接口都是这么干的,也没出过啥问题。
问题搜索阶段
既然出现问题,就开始找吧,搜寻了一堆类似的问题。
解法一:FeignClinet调用接口上加入注解
@PostMapping(value = "/test", consumes = MediaType.APPLICATION_JSON_VALUE)
实际表现没啥用,还是仍然报这个错
解法二:FeignClinet调用接口上加@ResponseBody注解
我直接贴链接了,我单加了@ResponseBody还是没用,具体下面涉及到修改配置,大家可以参考下面这个博客。
FeignClinet调用接口上加@ResponseBody注解
问题摸索阶段
试了几种方法都不管用,就可以尝试接收的对象是不是他不认识,开始尝试FeignClinet调用接口返回为String,发现没用报错了,把String 类型打印出来数据也没有问题。
没办法,只能先用String类型接着,然后再用JSON工具类解析,解决了这个问题。
String getId = ServiceFeignClient.getId(RequestDTO)
GetIdDTO getIdDTO= objectMapper.readValue(getId, GetIdDTO.class);
问题复盘阶段
回头看了一下问题所在
postman 调用外部接口的那个响应头 Content-Type = text/json;charset=UTF-8 正如标题报错所示。
但实际上我调用自己的接口 Content-Type = application/json ,
这两者明显不对应。但是目前也没有找到能够修改的方式。所以先临时记录下来,后续如果遇到了好的解决方案欢迎讨论。