Feign异常--Request method ‘POST‘ not supported

文章目录

  • 1、前置
  • 2、出现该问题的方式
  • 3、出现的问题
  • 4、通过源码进行分析
  • 5、解决方法
  • 6、说明, 个人理解, 欢迎指正
  • 7、完结


1、前置

1、这个问题我也找了很久, 也从网上搜寻了很多方法, 会在最后列出对应的地址
2、可能版本不同, 触发该问题的机制也会不一样, 因为我的解决方法和网上罗列的不是完全一样
3、我的版本:
**
Spring Cloud: Hoxton.SR3
spring-cloud-openfeign: 2.2.2.RELEASE
**

2、出现该问题的方式

最近在整理feign的各种调用方式, 本来准备先写调用方式这篇文章的, 结果发现了这个问题, 给先记录下来

/**
     * GET 请求多参, 携带头部
     *
     * @param data
     * @param headerMap
     * @return
     */
    @RequestLine("GET /testHeard/getHeard")
    CommonResult getHeard(@SpringQueryMap TestEntity data, @HeaderMap Map<String, Object> headerMap);

3、出现的问题

进行服务调用的时候, 返回了一个错误, 请求方法错误, 不支持POST. 因为我服务提供者是一个GET请求.
Feign的日志是先打印的, 然后在做请求操作
Feign异常--Request method ‘POST‘ not supported_第1张图片

4、通过源码进行分析

Feign异常--Request method ‘POST‘ not supported_第2张图片
至于为什么会强制转换, 这个大家可以自行研究一下, HttpURLConnection设置get请求无效.

我找寻了一下JDK8的文档, 并没有描述说会出现这种情况:https://docs.oracle.com/javase/8/docs/api/
但是Android的文档里面却对此进行了描述:
https://developer.android.com/reference/java/net/HttpURLConnection.html
在这里插入图片描述
然后就是get请求request.body() != null为何成立, 这个就没有细看了, 感觉弄不太明白, 就不写了
--------------------------分割线------------------------------
当我不使用@RequestLine注解时, 这里就是正常的了, 也算是一种解决方案
Feign异常--Request method ‘POST‘ not supported_第3张图片

5、解决方法

我使用的这个版本, 只需要这一步即可. 替换feign的httpclient

<!-- 使用Apache HttpClient替换Feign原生httpclient -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>10.1.0</version>
</dependency>

网上看到有的说需要配置连接方式, 在我这个版本可以不用做操作, 默认就是true
文档地址:https://docs.spring.io/spring-cloud-openfeign/docs/2.2.x-SNAPSHOT/reference/html/appendix.html
Feign异常--Request method ‘POST‘ not supported_第4张图片

   # 我使用的这个版本这一步可以忽略
   httpclient:
    enabled: true

6、说明, 个人理解, 欢迎指正

当我们引入feign-httpclient后:(feign-httpclient用的是ApacheHttpClient)
同时他也实现了feign的Client
Feign异常--Request method ‘POST‘ not supported_第5张图片

继续断点:

7、完结

1、从官网寻找自己的版本: https://docs.spring.io/spring-cloud-openfeign/docs/, 优先从官方查询是否有对应的解决方法

2、我使用的版本文档地址: 文档地址:https://docs.spring.io/spring-cloud-openfeign/docs/2.2.x-SNAPSHOT/reference/html/appendix.html

3、openfeign对应的其余文章:

代码地址以及对应的postman文件
Feign的使用示列–呕心沥血之作(1)
Feign的@FeignClient详解–呕心沥血之作(2)
Feign的默认契约注解详解–呕心沥血之作(3)
Feign异常–Request method ‘POST‘ not supported
Feign异常–A bean with that name | HTTP method type (ex. GET, POST)

你可能感兴趣的:(Spring,Cloud,+,Nacos,java,spring,feign,openfeign,error)