我刚发现 org.jboss.resteasy.client.ClientRequest
被废弃了,这使我在 Google 上找到的有关如何使用 RESTEasy
客户端的所有信息无效了。 Javadoc 没有提供任何替代方案。Google 也一样没有相关信息。
我暂时回退到了 2.3.5
,但我仍然对答案感兴趣,以及应该如何找到答案而不是询问其他人 - 是否有可以查看该信息的资源?
我刚发现 org.jboss.resteasy.client.ClientRequest
被废弃了,这使我在 Google 上找到的有关如何使用 RESTEasy
客户端的所有信息无效了。 Javadoc 没有提供任何替代方案。Google 也一样没有相关信息。
我暂时回退到了 2.3.5
,但我仍然对答案感兴趣,以及应该如何找到答案而不是询问其他人 - 是否有可以查看该信息的资源?
Invocation.Builder
的Javadocs中还有一些有用的信息,它没有提到一个不存在的ClientFactory
类,但如果RestEasy的作者能够从被弃用的类中添加一些指针就更好了。 - Andy MacKinlayhttp://example.org/pizza/{id}.json
(其中'id'是pizza的ID),它返回如下结果:{
"name": "Hawaiian",
"toppings": ["tomato", "ham", "cheese", "pineapple"]
}
在Invocation.Builder
Javadocs的基础上,我们可以像这样做:
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);
}
}
}
这也得益于this post的帮助,尽管它使用了已弃用的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>
如果您不使用RestEasy,那么javax.ws.rs
JAXRS实现来自Jersey。
或者您可以选择使用JBoss:
<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>