Как использовать метод PATCH с Джерси Invocation Builder? - PullRequest
0 голосов
/ 21 апреля 2019
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 - он отсутствует.

Любые предложения о том, как патчить?

==== ОБНОВЛЕНИЕ ====

После некоторого поиска в Google, похоже, клиент-джерси не поддерживает патч. Поскольку все вызовы API наших приложений выполняются с использованием клиента jersey, это небольшая проблема. Я предполагаю, что мне нужно будет найти альтернативную библиотеку, метод и код для вызова patch, но он также должен поддерживать OATH 2.0. Любые идеи, если такая библиотека существует, и, в идеале, есть несколько примеров?

К вашему сведению, с использованием Java 1.8.0_131-b11

1 Ответ

2 голосов
/ 21 апреля 2019

Благодаря @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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...