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

我是一个初学者,我对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实例可能是一个相当昂贵的操作。

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

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java RegEx中的单词边界\ b - java

我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…