Java 使用什么代替org.jboss.resteasy.client.ClientRequest?
我刚刚发现,Java 使用什么代替org.jboss.resteasy.client.ClientRequest?,java,jboss,resteasy,Java,Jboss,Resteasy,我刚刚发现,org.jboss.resteasy.client.ClientRequest已被弃用,这使得我在谷歌上找到的关于如何使用resteasy客户端的所有信息都无效。报告中没有说明应该使用什么。谷歌也同样保持沉默 现在我已经回到了2.3.5,但我对答案很感兴趣,也很想知道一个人是如何在不询问其他人的情况下找到答案的——我可以在哪里找到这些信息的资源吗?3.0测试版文档这样描述了这些不赞成意见: Resteasy手动客户端API、拦截器、StringConverter、, StringPa
org.jboss.resteasy.client.ClientRequest
已被弃用,这使得我在谷歌上找到的关于如何使用resteasy
客户端的所有信息都无效。报告中没有说明应该使用什么。谷歌也同样保持沉默
现在我已经回到了
2.3.5
,但我对答案很感兴趣,也很想知道一个人是如何在不询问其他人的情况下找到答案的——我可以在哪里找到这些信息的资源吗?3.0测试版文档这样描述了这些不赞成意见:
Resteasy手动客户端API、拦截器、StringConverter、,
StringParameterConverters和异步HTTP API都已被弃用
并可能在以后的版本中删除。现在有了一个JAX-RS
2.0,相当于上述各项
这意味着,如果我们假设在
http://example.org/pizza/{id}.json
,(其中'id'是比萨饼id),它返回如下结果
{
"name": "Hawaiian",
"toppings": ["tomato", "ham", "cheese", "pineapple"]
}
在这个基础上,我们可以做这样的事情
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import org.glassfish.jersey.jackson.JacksonFeature;
public class PizzaClient {
private Client client;
public PizzaClient() {
client = ClientBuilder.newClient();
// enable POJO mapping using Jackson - see
// https://jersey.java.net/documentation/latest/user-guide.html#json.jackson
client.register(JacksonFeature.class);
}
/** POJO which maps to JSON results using Jackson */
public static class Pizza {
private String name;
private String[] toppings;
public String getName() { return name; }
public String[] getToppings() { return toppings ; }
}
public Pizza getPizzaById(String id) {
String uri = String.format("http://example.org/pizza/%s.json", id)
Invocation.Builder bldr = client.target(uri).request("application/json");
return bldr.get(Pizza.class);
}
public static void main(String[] args) {
PizzaClient pc = new PizzaClient();
Pizza pizza = pc.getPizzaById("1");
System.out.println(pizza.getName() + ":");
for (String topping : pizza.getToppings()) {
System.out.println("\t" + topping);
}
}
}
(尽管使用了不推荐使用的API,但也有助于实现这一点)
还要注意,如果您想使用Jackson来读取pojo(或者,我认为,使用JAXB),可能需要注册一个特殊的处理程序
更新
实际上,您只需要以下Maven依赖项:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.3.1</version>
</dependency>
在这种情况下,您可以删除上面代码中的JacksonFeature行,代码使用更自由的Apache许可证。说我们应该关闭客户端连接;在您的示例中是
client.close()
。但我能找到的每一个例子都不能做到这一点。在垃圾收集过程中客户端连接会自动关闭吗?还有一些有用的信息,这些信息并不涉及不存在的ClientFactory
类,但是如果RestEasy作者从不推荐的类中添加一些指针,那就太好了。我要补充你的意见……那。。。。示例很少包含import语句(
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.4.Final</version>
</dependency>