繁体   English   中英

RestEasy:如何使用参数和api键发送简单的POST请求

[英]RestEasy : How to send an easy POST request with parameters and api key

我是一个初学者,我对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密钥呢?

首先,您必须查看要使用的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实例可能是一个相当昂贵的操作。

文档建议仅创建少量 Client实例, 并在可能的情况下重用它们 它还指出, Client实例在处置之前必须正确关闭,以避免资源泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM