WebTarget webTarget = httpClient.target(url);
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON)
.header(HttpUtils.AUTHORISATION_HEADER_NAME, "Bearer " + theAccessToken);
response = invocationBuilder.put(Entity.json(objectMapper.writeValueAsString(payload)));
httpClient的类型为javax.ws.rs.client.Client
并被注入。
invocatioBuilder实现javax.ws.rs.client.Invocation.Builder
,但在包org.glassfish.jersey.client
中定义
invocationBuilder.put,invocationBuilder.post,invocationBuilder.get都存在并且可以工作,但是这里没有invocationBuilder.patch-它不存在。
关于如何打补丁的任何建议?
====更新====
经过一番谷歌搜索后,泽西客户端似乎不支持补丁。由于我们所有的应用程序API调用都是使用jersey客户端进行的,因此存在一些问题。我认为我需要找到替代的库,方法和代码来调用补丁,但它也需要支持OATH 2.0。有没有这样的库的想法,理想情况下有一些例子?
FYI,使用Java 1.8.0_131-b11
答案 0 :(得分:2)
感谢@Paul Samsotha,有效的解决方案是这样:
WebTarget webTarget = httpClient.target(url);
webTarget.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON)
.header(HttpUtils.AUTHORISATION_HEADER_NAME, "Bearer " + theAccessToken);
response = invocationBuilder.method("PATCH", Entity.json(objectMapper.writeValueAsString(payload)));