Open Feign调用返回值失败: feign.codec.DecodeException: syntax error, pos 1

发布时间 2023-09-12 16:42:32作者: 勇敢-的心

【问题描述】

使用Open Feign调用第三方微服务的时候,可以找到对应的微服务和方法,只是在返回数据的时候报错了,具体报错信息如下:

2023-09-08 09:42:42.035 INFO 7 --- [http-nio-8233-exec-9] c.c.common.config.seata.FeignDecoder : feign调用响应:app-websocket-test
2023-09-08 09:42:42.036 ERROR 7 --- [http-nio-8233-exec-9] c.c.c.exception.GlobalExceptionHandler : /intelli-car-identify/zhgd/CarInfo:服务运行异常

feign.codec.DecodeException: syntax error, pos 1
at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:187)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:147)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:80)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100)

............

Caused by: com.alibaba.fastjson.JSONException: syntax error, pos 1
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1295)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1205)
at com.alibaba.fastjson.JSON.parse(JSON.java:108)
at com.alibaba.fastjson.JSON.parse(JSON.java:99)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:170)
at com.cscecnf.common.config.seata.FeignDecoder.decode(FeignDecoder.java:32)
at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:183)
... 87 common frames omitted

 

【原因分析】

根据每个步骤的日志打印分析,调用第三方微服务及其方法并没有报错,只是在第三方返回数据的时候报错了;

基本可以判断的是微服务本身的方法都是可用的正常的,并且根据报错信息,是在解码的时候出现了异常。

feign.codec.DecodeException 异常表示在使用 OpenFeign 进行解码(反序列化)的响应时发生了异常,这种异常一般与响应内容的解析有关。

具体看了一下需要序列化和反序列化的WebSocketDTO对象,发现具体两个微服务中的WebSocketDTO对象都没有实现Serializable序列化接口。

 

【解决方法】

找到问题后,就好解决,分别在两个微服务中把WebSocketDTO对象都 implements Serializable接口。再次启动服务,调用成功返回了数据。