首页 > 解决方案 > 如何使用 Jersey 将参数放入 post 请求中?

问题描述

我们想向外部 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 发送参数。

我们如何将参数放入发布请求正文中?

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

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

在这种情况下,实体是什么?我们假设我们可以手动创建一个包含参数的文本正文,但是必须有更好的方法来做到这一点,这将确保没有拼写错误等?例如,它需要一张地图,甚至是一个 addParam 函数?

标签: postjersey

解决方案


推荐阅读