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

近期项目中需要通过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的包,就没下载成功。
添加下面的依赖:


    
    io.github.openfeign
    feign-httpclient
    ${feign.version}

你可能感兴趣的:(java)