beschrieben zu verwenden sein wird, wenn wir es annehmen, bei http://example.org/pizza/{id}.json
ein JSON-API ist, (wobei 'id' ist eine Pizza ID), die Ergebnisse wie
{
"name": "Hawaiian",
"toppings": ["tomato", "ham", "cheese", "pineapple"]
}
aufbauend auf dem Invocation.Builder
Javadocs zurückgibt, können wir etwas tun,
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);
}
}
}
(dies wird auch von this post unterstützt, obwohl die veraltete API verwendet wird).
Beachten Sie auch, dass Sie einen speziellen Handler registrieren müssen, wenn Sie Jackson verwenden möchten POJOs zu lesen (oder, wie ich glaube, mit JAXB) wie dokumentiert here
aktualisieren Sie müssen eigentlich nur die folgende Maven Abhängigkeiten:
<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>
(In diesem Fall wird man nicht überhaupt mit Resteasy - die javax.ws.rs
JAXRS Implementierung kommt aus Jersey)
OR Sie mit JBoss-Stick kann:
<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>
In diesem Fall können Sie nur die JacksonFeature Linie im obigen Code entfernen, und der Code verwendet die liberaleren Lizenz Apache.
Es gibt auch einige nützliche Informationen [in den Javadocs für 'Invocation.Builder' vergraben] (http://docs.jboss.org/resteasy/docs/3.0.4.Final/javadocs/javax/ws/rs/ client/Invocation.Builder.html), die sich nicht auf eine nicht existierende 'ClientFactory'-Klasse bezieht, aber es wäre großartig, wenn die RestEasy-Autoren einige Zeiger aus den veralteten Klassen hinzufügen würden. –