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


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的日志是先打印的, 然后在做请求操作
在这里插入图片描述

4、通过源码进行分析

在这里插入图片描述
至于为什么会强制转换, 这个大家可以自行研究一下, 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注解时, 这里就是正常的了, 也算是一种解决方案
在这里插入图片描述

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
在这里插入图片描述

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

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

当我们引入feign-httpclient后:(feign-httpclient用的是ApacheHttpClient)
同时他也实现了feign的Client
在这里插入图片描述
在这里插入图片描述
继续断点:
在这里插入图片描述

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)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值