Как поместить параметры в почтовый запрос с Джерси? - PullRequest
0 голосов
/ 01 июля 2019

Мы хотим отправить запрос на отправку внешнему провайдеру 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 + "&param2=" + 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...