如何在Jersey Invocation Builder中使用PATCH方法?

问题描述 投票:0回答:1
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。如果存在这样一个库的任何想法,并且理想情况下有一些例子吗?

仅供参考,使用Java 1.8.0_131-b11

patch jersey-client
1个回答
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)));
© www.soinside.com 2019 - 2024. All rights reserved.