Мы хотим отправить запрос на отправку внешнему провайдеру API.
мы знаем, как отправить GET и как анализировать ответ JSON.
Мы знаем, как отправить полезную нагрузку JSON в POST.
То, что мы не можем найти пример хорошего способа получить параметры запроса в теле сообщения POST с использованием джерси.
например. чтобы отправить действительно простой запрос get, мы можем сделать это:
private final Client theHttpClient;
ClientConfig clientConfig = new ClientConfig();
JacksonJaxbJsonProvider jacksonProvider = new JacksonJaxbJsonProvider();
jacksonProvider.setMapper(theObjectMapper);
clientConfig.register(jacksonProvider);
clientConfig.register(EncodingFilter.class);
clientConfig.register(GZipEncoder.class);
theHttpClient = ClientBuilder.newClient(clientConfig);
int param1 = 123134
String param2 = "this+is+a+test";
String url = "https://api.some.com?param1=" + param1 + "¶m2=" + param2;
uri = new URI(url);
WebTarget webTarget = theHttpClient.target(uri);
Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
RESPONSE response = invocationBuilder.get(responseClass);
Этот код отправит параметры через get.
Как бы мы получили параметры в теле почтового запроса?
мы видим, что существует invoationBuild.post, который выглядит так:
@Override
public <T> T post(final Entity<?> entity, final Class<T> responseType)
throws ProcessingException, WebApplicationException {
return method("POST", entity, responseType);
}
Что такое сущность в этом случае? Мы предполагаем, что могли бы вручную создать текстовое тело с упакованными в него параметрами, но должен быть более хороший способ сделать это, который обеспечит отсутствие опечаток и т. Д.? Например. что-то, что берет карту, или даже функцию addParam?