如何使用Jersey将参数放入发布请求中?

时间:2019-07-01 19:05:33

标签: post jersey

我们想向外部API提供者发送发布请求。

我们知道如何发送GET,以及如何解析JSON响应。

我们知道如何将JSON有效负载发送到POST。

我们找不到一个示例的好方法,该示例将请求参数放入带有jersey的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发送参数。

我们如何将参数放入请求后的正文中?

我们看到有一个invocationBuild.post,看起来像这样:

    @Override
    public <T> T post(final Entity<?> entity, final Class<T> responseType)
            throws ProcessingException, WebApplicationException {
        return method("POST", entity, responseType);
    }

在这种情况下,实体是什么?我们假设可以手动创建一个带有参数的文本正文,但是必须有一种更好的方法来执行此操作,这将确保没有错别字等?例如。需要一张地图甚至是addParam函数的东西?

0 个答案:

没有答案