post - 如何使用 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 + "¶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 函数?
解决方案
推荐阅读
- ios - iOS App 仅接收部分推送通知
- javascript - 使用 javascript 或 jquery 刷新 FCM 令牌并取消订阅 Web 通知
- ethereum - 松露测试是否支持 ABIEncoderV2?
- c++ - 如何避免为聚合初始化重新输入类型信息?
- reactjs - 上传 CSV 文件并在 REACTJS 中将其解析为 JSON
- java - 如何在特定列上实现休眠版本控制?
- python - 为什么分类器的 score 函数返回的结果与 sklearn 中的 cross_val_score 函数完全不同?
- mongodb - Mongo $lookup 过滤器使用嵌套查询
- python - 如何在Python中使用正则表达式提取关键字后的数字?
- c# - 如何解释“at mynamespace.MyClass+BA ()”形式的堆栈跟踪