• feign.FeignException: status 400 reading xxx 异常


    报错:feign.FeignException: status 400 reading xxx 异常

    具体就是feign接口在调用生产者提供的某个方法时异常,无法正常调用。

    百思不得其解,因为feign接口和生产者控制器中所写的方法名是一模一样的。

    都是:

    @RequestMapping("/loginLog_logs")
    public List<LoginLog> getMyLoginLogs(String username);

    为了排除是生产者方面的问题,进行Junit单元测试之后,排除了这种可能。

    折腾一个多小时,最后百度了一番,发现有很多种说法:

    1-调用服务的时候,消费者接口中的@RequestParam注解中的value值和服务提供者的controller里面的@RequestParam注解里面的value值一定要保持一致,不然就会报这个错误。

    2-Feign 请求服务,在Controller 之上的 xxxMapping 的注解,如果使用 @RequestMapping 的话, 需要声明method 属性, 否则就会引发这个异常。即@RequstMapping方法没有指定请求方式。

    3-Feign的那个方法使用的@RequestParam注解,而接收的参数长度过长,就会导致报400错误,这时需要换为@RequestBody。

    都是什么鬼,发现和我的情况都不一样,问题并没有解决。

    最后试着尝试在Feign接口和生产者控制器的方法的参数前加上@RequestParam之后,再指定参数的名字,

    @RequestMapping("/loginLog_logs")
    public List<LoginLog> getMyLoginLogs(@RequestParam(name="name") String username);

    问题竟然解决了。。

    也就是说,在遇到这种情况的时候,即使Feign接口和生产者控制器的方法一模一样,但是因为参数没有加上@RequestParam且指定参数属性的名字,就会导致Feign无法成功调用生产端的这个方法。。

    同时还可能会报错显示为:java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0

    天坑啊。

  • 相关阅读:
    Cheat Engine 创建线程
    Cheat Engine 人造指针
    Cheat Engine 特征码
    Cheat Engine 自动注入
    Cheat Engine 作弊表框架代码
    Cheat Engine 修改汇编指令
    Shell 选择排序
    Shell 冒泡排序
    Selenium API常用方法
    Selenium数据驱动
  • 原文地址:https://www.cnblogs.com/tangshun100/p/13746126.html
Copyright © 2020-2023  润新知