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的日志是先打印的, 然后在做请求操作
4、通过源码进行分析
至于为什么会强制转换, 这个大家可以自行研究一下, HttpURLConnection设置get请求无效.
我找寻了一下JDK8的文档, 并没有描述说会出现这种情况//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
文档地址//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、我使用的版本文档地址: 文档地址//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)
还没有评论,来说两句吧...