基于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类型的对象,于是就报错。

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

(0)

相关推荐

  • Spring Cloud出现Options Forbidden 403问题解决方法

    摘要:本文简述了博主在开发过程中,需要跨域调试的时候,出现了 OPTIONS 请求 Forbidden 的问题,以及解决方法. 403 Forbidden 解释: Forbidden You don't have permission to access / on this server. Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to

  • 解决SpringCloud Feign传对象参数调用失败的问题

    SpringCloud Feign传对象参数调用失败 不支持GET请求方式 使用Apache HttpClient替换Feign原生httpclient @RequestBody接收json参数 bootstrap-local.yml feign: httpclient: enabled: true pom.xml <!-- 使用Apache HttpClient替换Feign原生httpclient --> <dependency> <groupId>com.netf

  • java.util.concurrent.ExecutionException 问题解决方法

    java.util.concurrent.ExecutionException错误信息,这里给出解决方案,大家根据具体要求更改. SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standa

  • 基于FeignException$InternalServerError的解决方案

    原因: feign传值出错无法接收到传值 由于是POST所以添加@RequestBody进行尝试 解决: 错误原因是未添加@RequestBody 尝试不通过json直接在body中传字符串看看能不能直接通过@RequestBody接收 Feign调用时失败,feign.FeignException:status 500 readingXXX.LocalDate序列化引起的错误 最近在项目中需要用feign做一个服务端调用,调用别的服务的接口将我的一些信息发给它,但是总是 报错:feign.Fe

  • 基于Rest的API解决方案(jersey与swagger集成)

    一.项目目标 动静分离的架构,即客户端和服务器端的分离,客户端可以是IOS.android或者静态的页面.需要服务器端提供webservice服务,并且为了方便编写api接口文档,所以引入了swagger. 二.技术选型 为什么使用jersey而不用spring mvc 虽然spring-web提供了REST的功能,但是没有实现JAX-RS的标准. 二.maven配置 Java代码 <properties> <jetty.version>8.1.16.v20140903</j

  • 基于Springboot吞吐量优化解决方案

    一.异步执行 实现方式二种: 1.使用异步注解@aysnc.启动类:添加@EnableAsync注解 2.JDK 8本身有一个非常好用的Future类--CompletableFuture @AllArgsConstructor public class AskThread implements Runnable{ private CompletableFuture<Integer> re = null; public void run() { int myRe = 0; try { myRe

  • ASP.NET MVC下基于异常处理的完整解决方案总结

    EntLib的异常处理应用块(Exception Handling Application Block)是一个不错的异常处理框架,它使我们可以采用配置的方式来定义异常处理策略.而ASP.NET MVC是一个极具可扩展开发框架,在这篇文章中我将通过它的扩展实现与EntLib的集成,并提供一个完整的解决异常处理解决方案. 一.基本异常处理策略 我们首先来讨论我们的解决方案具体采用的异常处理策略: 对于执行Controller的某个Action方法抛出的异常,我们会按照指定配置策略进行处理.我们可以采

  • Android实现几种推送方式解决方案

    本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息.这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很多商家要做广告.本文就是来探讨下Android中实现推送功能的一些解决方案,也希望能够起到抛砖引玉的作用.^_^ 1.推送方式基础知识: 在移动互联网时代以前的手机,如果有事情发

  • 多业务解决方案的QoS描述

    一.QoS概述 在任何时间.任何地点和任何人实现任何媒介信息的交流是人类在通信领域的永恒需求,在IP技术成熟以前,所有的网络都是单一业务网络,如PSTN只能开电话业务,有线电视网只能承载电视业务,X.25网只能承载数据业务等.网络的分离造成业务的分离,降低了沟通的效率. 由于互联网的流行,IP应用日益广泛,IP网络已经渗入各种传统的通信范围,基于IP构建一个多业务网络成为可能.但是,不同的业务对网络的要求是不同的,如何在分组化的IP网络实现多种实时和非实时业务成为一个重要话题,人们提出了QoS(

  • 基于OpenID Connect及Token Relay实现Spring Cloud Gateway

    目录 前言 实现 Keycloak 网关 依赖项 代码 配置 测试 资源服务器 依赖项 代码 配置 测试 结论 前言 当与Spring Security 5.2+ 和 OpenID Provider(如KeyClope)结合使用时,可以快速为OAuth2资源服务器设置和保护Spring Cloud Gateway. Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为API提供跨领域的关注点,如:安全性.监控/指标和弹性. 我们认为这种组合是一种很有前途的基于

  • 关于Javascript模块化和命名空间管理的问题说明

    [关于模块化以及为什么要模块化] 先说说我们为什么要模块化吧.其实这还是和编码思想和代码管理的便利度相关(没有提及名字空间污染的问题是因为我相信已经考虑到模块化思想的编码者应该至少有了一套自己的命名法则,在中小型的站点中,名字空间污染的概率已经很小了,但也不代表不存在,后面会说这个问题). 其实模块化思想还是和面向对象的思想如出一辙,只不过可能我们口中所谓的"模块"是比所谓的"对象"更大的对象而已.我们把致力完成同一个目的的功能函数通过良好的封装组合起来,并且保证其

  • 利用SQL SERVER 2005数据库镜像实现可用性分析

    我们首先来看一下什么是数据镜像: 现在几乎所有的应用系统都是基于数据库的,那么数据库的负荷是比较大的,在一天24小时中,任何时间都有可能会有数据要保存到数据库,或是从数据库中读出数据.任意时刻都会有用户连接到我们的数据库服务器上,几十,几百甚至成千上万个用户来连接使用我们的数据库,那么不论是计划内的宕机还是计划外的故障都会造成一定的损失.给我们的用户或是企业带很大的损失,特别是随着数据时代的到来,用户对数据的使用提出了更高的要求,那么作为一个DBA,就要想怎么做才能将这个损失减少到最低,正是因为

  • 几个比较实用的JavaScript 测试及效验工具

    尽管JavaScript的语法非常简单,但对于写程序而言仍然是困难重重,就是因为它的运行环境:基于Web浏览器. JSLint JSLint是基于Web的验证JavaScript错误代码的工具.它拥有的功能及特定的设置来使用您的需求,自定义你的验证算法. JsUnit JsUnit是一款在客户端(在浏览时)的单元测试JavaScript框架.对JavaScript而言,JUnit就像是它的一个端口.当然它也可以在多个浏览器.多个机器的不同操作系统中自动运行.它的发展始于2001年1月. J3Un

随机推荐