Feign不支持PATCH请求的解决办法

本文介绍了解决使用Spring Cloud调用REST接口时PATCH方法出现的问题。当遇到因Java HttpURLConnection不支持PATCH方法导致的异常时,可以通过引入HttpClient依赖来解决。文章还提到了熔断器可能会影响异常的准确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期项目中需要通过Spring-Cloud调用其他project的REST接口,不管是delete、put、post或get,都可以调试成功,但是到patch方式发送请求就无法访问:
如果开启了熔断器,需要去掉调用,因为,熔断器会把你的真正的异常给覆盖掉,不管你什么异常,熔断器一般会给你提示请求超时之类的异常。
超时异常如:
com.netflix.hystrix.exception.HystrixRuntimeException: update timed-out and no fallback available.
去掉熔断器之后的真正的异常为:

feign.RetryableException: Invalid HTTP method: PATCH executing PATCH http://agent-info/agents/0123456748
...
Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH
  at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:440)


这个问题是因为java.net.HttpURLConnection.setRequestMethod 不支持PATCH方法,无法将请求发送出去。
解决办法:HttpClient 支持PATCH方法,加入HttpClient依赖即可解决。注:如果添加了依赖还不成功,去你的maven库中看看依赖的jar包有没有下载下来,我第一次用了Netflix的包,就没下载成功。
添加下面的依赖:

<dependency>
    <!-- Required to use PATCH -->
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>${feign.version}</version>
</dependency
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值