基于FeignException$InternalServerError的解决方案

 更新时间:2021年06月30日 09:24:54   作者:CodeSerial  
这篇文章主要介绍了FeignException$InternalServerError的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

原因:

feign传值出错无法接收到传值

由于是POST所以添加@RequestBody进行尝试

解决:

错误原因是未添加@RequestBody

尝试不通过json直接在body中传字符串看看能不能直接通过@RequestBody接收

Feign调用时失败,feign.FeignException:status 500 readingXXX。LocalDate序列化引起的错误

最近在项目中需要用feign做一个服务端调用,调用别的服务的接口将我的一些信息发给它,但是总是

报错:feign.FeignException:status 500 readingXXX。

我的调用代码如下:

@PostMapping(value = "/xx/xxx")
public ResultData<String> saveProjectInfo(ProjectInfo p);

按理说应该是没问题的,对方也返回了code为500的响应,说明请求确实送达了对方接口,但是没有正常处理。

于是怀疑是参数没有传对,然后就打断点调试,把发送请求前的参数信息“p”复制出来,打开对方项目的swagger文档,发送复制来的参数,发现能正常调通。

这就奇怪了,同样的参数在我这里通过feign调用就不行,在swagger上直接调用就可以。于是开始到处找原因,最后在别人的建议下用抓包工具抓从我调用方法这里发出的请求包,看看从我这里发出的包是否任然与swagger上输的参数一样。

果然发现了问题,因为对方的ProjectInfo类的crateTime属性是LocalDate类型的,为了类型一致我这里建实体类时也把createTime属性设为LocalDate类型的。

在swagger上测试直接输字符串就行,对方的接口在接收参数时直接就将其转为LocalDate了:

{
  .......
  "createTime"  : "2020-01-09"
   .........
}

但是我的请求发出后,抓的包显示createTime变成了这样:

这就导致与对方的接收参数不一致,自然就直接报错了。最后直接把我的ProjectInfo实体类的createTime属性设为String类型即可,也可以引入jar包后使用一些注解在发送时将这个属性序列化成指定的格式如”yyyy-MM-dd“

总之就是对于LocalDate这个类,默认转化为json时将它看成了一个普通的JavaObject(我预期转化成yyyy-MM-dd),然后发送到网络上。而在对方接收时却不能根据那种格式json正确的转换成LocalDate类型的对象,于是就报错。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot中的CSRF攻击及预防方法

    SpringBoot中的CSRF攻击及预防方法

    CSRF攻击是一种常见的网络攻击方式,可以通过欺骗用户来执行恶意操作,在Spring Boot应用程序中,我们可以采取多种措施来预防CSRF攻击,本文将给大家介绍一下CSRF攻击以及如何预防攻击,需要的朋友可以参考下
    2023-07-07
  • java解决单缓冲生产者消费者问题示例

    java解决单缓冲生产者消费者问题示例

    这篇文章主要介绍了java解单缓冲生产者消费者问题示例,需要的朋友可以参考下
    2014-04-04
  • java中重写父类方法加不加@Override详解

    java中重写父类方法加不加@Override详解

    这篇文章主要介绍了java中重写父类方法加不加@Override详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java将科学计数法数据转为字符串的实例

    Java将科学计数法数据转为字符串的实例

    下面小编就为大家带来一篇Java将科学计数法数据转为字符串的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Spring Boot中配置定时任务、线程池与多线程池执行的方法

    Spring Boot中配置定时任务、线程池与多线程池执行的方法

    这篇文章主要给大家介绍了关于Spring Boot中配置定时任务、线程池与多线程池执行的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 详解在Spring Boot框架下使用WebSocket实现消息推送

    详解在Spring Boot框架下使用WebSocket实现消息推送

    这篇文章主要介绍了详解在Spring Boot框架下使用WebSocket实现消息推送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • Java之NIO基本简介

    Java之NIO基本简介

    这篇文章主要介绍了Java之NIO基本简介,文中给大家讲到了NIO 与 BIO的比较结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Spring超详细讲解BeanUtils改造

    Spring超详细讲解BeanUtils改造

    BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于 po、vo、dto 的拷贝已经足够用了。但是其还是有一些不够完美的地方,下面我们来探讨一下有哪些不足以及改造
    2022-06-06
  • java中JSONObject转换为HashMap(方法+main方法调用实例)

    java中JSONObject转换为HashMap(方法+main方法调用实例)

    这篇文章主要介绍了java中JSONObject转换为HashMap(方法+main方法调用实例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • springboot整合mqtt客户端示例分享

    springboot整合mqtt客户端示例分享

    这篇文章主要介绍了springboot整合mqtt客户端示例分享的相关资料,需要的朋友可以参考下
    2023-07-07

最新评论