feign.FeignException$BadRequest: status 400 reading 诡异错误记录
创始人
2024-05-10 01:17:08
0

诡异事情描述:A客户端通过feign调用 服务端接口报错feign.FeignException$BadRequest: status 400 reading。B客户端通过feign调用服务端接口 又是正常的返回。 A和B 项目中导入的相关feign版本都一样。

代码调整前如下:

客户端代码:

@Data
public class ControlRequestDto implements Serializable {private static final long serialVersionUID = -5082851597684307746L;//设备点位名对应的水务集团的编码private String mappingId;//设备点位名private String tag;//控制命令下发时间private Date controlTime;//控制命令值private String controlValue;
}
/*** @author wangtingsong* @date 2022/5/9 16:15* @description 这里的注解FeignClient中的name属性值必须是 你调用的接口模块的spring.application.name 的值*/
@FeignClient(name = "controlcenter")
public interface ControlCenterClient {@PostMapping("/controlcenter/control/controlDevice")String controlDevice(@RequestBody ControlRequestDto controlRequestDto);}

服务端代码:

@RestController
@RequestMapping("/control")
@Slf4j
public class ControlCenterController {@Autowiredprivate ControlCenterService controlCenterService;@PostMapping("/controlDevice")public BaseResult controlDevice(@RequestBody ControlRequestDto dto){log.info("控制设备入参:{}", JSONObject.toJSONString(dto));try {return controlCenterService.controlDevice(dto);}catch (Exception e){log.error("控制设备异常:{}", dto.getTag(),e);return BaseResult.builder().message("控制设备异常").code("500").build();}}
}

问题查找:根据A和B断点来一步步看,最终是哪里调用不一样。发现一个是A调用的是RetryableFeignLoadBalancer中的execute方法 而B调用的是FeignLoadBalancer 中的execute方法。

最后发现参数中的时间controlTime字段在两个方法中显示有点不一样,然后就想到估计是两个类中对 参数的时间类型处理有点不同。(这里到底为什么同样的客户端调用 服务端代码 会走两个不同的LoadBalancer,还在继续研究中)。

解决办法:最终解决是给时间字段加上 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

//控制命令下发时间

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

private Date controlTime;

总结:这种400错误有时候需要注意字段的类型

相关内容

热门资讯

我国部署开展 大规模职业技能培... 新华社北京7月15日电 (记者 姜琳) 国务院就业促进和劳动保护工作领导小组近日印发关于开展大规模职...
请简要描述什么是平行宇宙? 请简要描述什么是平行宇宙?百科里的看不懂。如同2条平行线 永远不会相交所以 如果平行宇宙的话你可能...
银魂这句话出自多少集? 银魂这句话出自多少集?是在253话,小玉和银桑之间的一段对话,银桑回答完以后,霸气地拿着洞爷湖在墙上...
小沈阳竟遭《我就是演员》全体导... 小沈阳竟遭《我就是演员》全体导师灭灯,表情略显不服,他真的过气了吗?真的过气了。现在他的热度非常低,...
求曾经看过的一本小说!求书名!... 求曾经看过的一本小说!求书名!内容为有一个小男孩,从小就一直超级倒霉......看变形金刚得了那么Y...
大航海时代ol 购买更多的货物 大航海时代ol 购买更多的货物rt先是引取,就是买卖技能,等级越高就能买入更大量,组队了就能分享到技...
请告诉我关于守护甜心第四季悦梦... 请告诉我关于守护甜心第四季悦梦的资料??????????有吗
人生嘛,就是笑笑别人,顺便再让... 人生嘛,就是笑笑别人,顺便再让别人笑笑。什么意思?人生嘛,就是笑笑别人,顺便再让别人笑笑。什么意思?...
电磁感应的概念和定义是什么? 电磁感应的概念和定义是什么?电磁感应(Electromagneticinduction)现象是指放在...
三元股份相关公司新增一项900... (来源:快查一企业中标了)快查APP显示,三元股份相关公司北京首农畜牧发展有限公司于2025年7月1...