【发布时间】:2015-11-19 15:40:32
【问题描述】:
我试图使用 CXF(版本 3.1.3)客户端通过 PATCH 方法调用 API。
尝试按照以下线程中指定的步骤但无法解决。 只获取 URLConnectionHttpConduit 而不是 AsyncHttpConduit
http://cxf.apache.org/docs/asynchronous-client-http-transport.html
How to use PATCH method in CXF
Verifying CXF HttpAsyncClient use of use.async.http.conduit contextual property
这里是sn-p的代码:
Bus bus = BusFactory.getDefaultBus();
// insist on the async connector to use PATCH.
bus.setProperty(AsyncHTTPConduit.USE_ASYNC,
AsyncHTTPConduitFactory.UseAsyncPolicy.ALWAYS);
WebClient webClient = WebClient.create(request.getRestURL());
WebClient.getConfig(webClient).getBus().setProperty
(AsyncHTTPConduit.USE_ASYNC, AsyncHTTPConduitFactory.UseAsyncPolicy.ALWAYS);
WebClient.getConfig(webClient).getRequestContext()
.put(AsyncHTTPConduit.USE_ASYNC, AsyncHTTPConduitFactory.
UseAsyncPolicy.ALWAYS);
HTTPConduit conduit = (HTTPConduit)WebClient.getConfig(webClient)
.getConduit();
System.out.println(conduit.getClass().getName());
Response response = webClient.invoke(request.getMethod(), null);
System.out.println("service response = "+ response);
我什至尝试在 POST 请求中使用 X-HTTP-Method-Override=PATCH 标头,
其他端服务是使用 RestEasy 实现的,看起来好像不遵守 X-HTTP-Method-Override 标头。
你能帮我找到问题吗?
【问题讨论】:
-
你使用的是正确版本的 jar 吗?发布 jar 版本并检查该类的源代码(如果有)。
-
您是否根据帖子中引用的 SE 问题设置了属性 use.async.http.conduit 并正确添加了依赖项?
-
是的,正如我已经提到的,我正在设置属性 AsyncHTTPConduit.USE_ASYNC (use.async.http.conduit) CXF Jar 版本 3.1.3,还添加了 hc jar 依赖项。
-
我还尝试将属性值设置为不同的值,例如 TRUE 和 ALWAYS bus.setProperty(AsyncHTTPConduit.USE_ASYNC, AsyncHTTPConduitFactory.UseAsyncPolicy.ALWAYS);或 bus.setProperty(AsyncHTTPConduit.USE_ASYNC, Boolean.TRUE);
标签: java web-services jax-rs cxf http-patch