RestEasy:如何发送带有参数和 api 密钥的简单 POST 请求
RestEasy : How to send an easy POST request with parameters and api key
我是初学者,对 Resteasy 有点迷茫
我想发送一个带有 URL 的 post 请求,类似于:http://myurl.com/options?value=3name=picture
String myValue = "3";
String myName = "picture";
String key = "topsecret";
我不太确定接下来会发生什么。我看过几个教程类(我不是很清楚)和另一种类似于此的方法
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.add("value", myValue);
queryParams.add("name", myPicture);
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);;
final Builder builder = target.request();
当我写作时,我有很多警告。这是正确的方法吗? API 键呢?
首先,您必须检查要使用的 API 的文档,了解如何将 API 密钥发送到服务器。 并非所有 API 都遵循相同的方法。
出于示例目的,我们假设 API 密钥必须在 X-Api-Key
header 中发送。这是一个非标准,我编造它只是为了演示如何使用客户端API。
所以你可以拥有以下内容:
// Create a client
Client client = ClientBuilder.newClient();
// Define a target
WebTarget target = client.target("http://myurl.com/options")
.queryParam("value", "3")
.queryParam("name", "picture");
// Perform a request to the target
Response response = target.request().header("X-Api-Key", "topsecret")
.post(Entity.text(""));
// Process the response
// This part is up to you
// Close the response
response.close();
// Close the client
client.close();
以上代码使用了JAX-RSAPI,由RESTEasy实现。您最好尽可能使用 Client
instead of ResteasyClient
以确保与其他实现的可移植性。
以上代码还假定您要在请求负载中发送一个空文本。 相应修改。
Response
个包含 un-consumed 实体输入流的实例 应该关闭 。这对于仅处理响应 header 和状态代码, 忽略响应实体 .
的场景很典型
超出问题的范围,请记住 Client
instances are heavy-weight objects that manage the underlying client-side communication infrastructure. Hence initialization as well as disposal of a Client
实例可能是一个相当昂贵的操作。
documentation advises to create only a small number of Client
instances and reuse them when possible. It also states that Client
实例必须在处理前正确关闭 以避免资源泄漏。
我是初学者,对 Resteasy 有点迷茫
我想发送一个带有 URL 的 post 请求,类似于:http://myurl.com/options?value=3name=picture
String myValue = "3";
String myName = "picture";
String key = "topsecret";
我不太确定接下来会发生什么。我看过几个教程类(我不是很清楚)和另一种类似于此的方法
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.add("value", myValue);
queryParams.add("name", myPicture);
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);;
final Builder builder = target.request();
当我写作时,我有很多警告。这是正确的方法吗? API 键呢?
首先,您必须检查要使用的 API 的文档,了解如何将 API 密钥发送到服务器。 并非所有 API 都遵循相同的方法。
出于示例目的,我们假设 API 密钥必须在 X-Api-Key
header 中发送。这是一个非标准,我编造它只是为了演示如何使用客户端API。
所以你可以拥有以下内容:
// Create a client
Client client = ClientBuilder.newClient();
// Define a target
WebTarget target = client.target("http://myurl.com/options")
.queryParam("value", "3")
.queryParam("name", "picture");
// Perform a request to the target
Response response = target.request().header("X-Api-Key", "topsecret")
.post(Entity.text(""));
// Process the response
// This part is up to you
// Close the response
response.close();
// Close the client
client.close();
以上代码使用了JAX-RSAPI,由RESTEasy实现。您最好尽可能使用 Client
instead of ResteasyClient
以确保与其他实现的可移植性。
以上代码还假定您要在请求负载中发送一个空文本。 相应修改。
Response
个包含 un-consumed 实体输入流的实例 应该关闭 。这对于仅处理响应 header 和状态代码, 忽略响应实体 .
超出问题的范围,请记住 Client
instances are heavy-weight objects that manage the underlying client-side communication infrastructure. Hence initialization as well as disposal of a Client
实例可能是一个相当昂贵的操作。
documentation advises to create only a small number of Client
instances and reuse them when possible. It also states that Client
实例必须在处理前正确关闭 以避免资源泄漏。