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

来源:互联网 发布:asp.net与vb.net 编辑:程序博客网 时间:2024/06/06 06:42

近期项目中需要通过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