我是初学者,我对Resteasy有点失落
我想发送一个帖子请求,其网址类似于: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密钥怎么样?
答案 0 :(得分:5)
首先,您必须检查您要使用的API文档,了解如何将API密钥发送到服务器。 并非所有API都遵循相同的方法。
出于示例目的,我们假设必须在X-Api-Key
标头中发送API密钥。它是非标准,我只是为了演示如何使用客户端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();
上面的代码使用了由RESTEasy实现的JAX-RS API。您最好尽可能使用Client
而不是ResteasyClient
,以确保与其他实现的可移植性。
上述代码还假定您要在请求有效负载中发送空文本。 相应地修改它。
应该关闭包含未消耗的实体输入流的 Response
个实例
超出问题范围,请记住Client
个实例是重量级对象,用于管理底层客户端通信基础架构。因此,初始化以及处理Client
实例可能是一项相当昂贵的操作。
documentation建议只创建小数 Client
个实例,尽可能重用它们。它还声明Client
实例必须正确关闭才能被处理以避免资源泄漏。