我们想向外部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 + "¶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发送参数。
我们如何将参数放入请求后的正文中?
我们看到有一个invocationBuild.post,看起来像这样:
@Override
public <T> T post(final Entity<?> entity, final Class<T> responseType)
throws ProcessingException, WebApplicationException {
return method("POST", entity, responseType);
}
在这种情况下,实体是什么?我们假设可以手动创建一个带有参数的文本正文,但是必须有一种更好的方法来执行此操作,这将确保没有错别字等?例如。需要一张地图甚至是addParam函数的东西?