Nach dem Erstellen eines REST WebServices mit JAX-RS habe ich schon ein Beispiel für einen PHP Client eines WebServices gegeben. Natürlich lässt sich der REST WebService auch mit Java exzellent verarbeiten. Wie das geht werde ich in einem kleinen Beispiel demonstrieren. Der Client ruft den REST Web Service aus dem Tutorial für REST WebServices mit Jersey auf und benötigt auch die meisten JAR-Files aus diesem Beispiel. Zusätzlich wird noch das jersey-client-1.0.2.jar benötigt.
Jersey stellt uns für den einfachen Zugriff die Klassen Client und WebResource bereit.
Client client = Client.create();
WebResource wr = client.resource("http://localhost:8080/wstest/services/calculator/calc");
Mit Hilfe von WebResource können wir mit den HTTP Methoden post(), delete(), put() und natürlich get() unseren WebService aufrufen. Und mit der MultivaluedMap ist es uns möglich, dem WebService unsere Abfrageparameter mitzugeben.
package de.wstest.client;
import java.util.List;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;
import de.wstest.MathResults;
import de.wstest.ServiceResult;
public class CalculatorClient {
public static void main(String[] args) {
Client client = Client.create();
//URL des WebService
WebResource wr = client.resource("http://localhost:8080/wstest/services/calculator/calc");
//Parameter für WebService
MultivaluedMap< String, String > params = new MultivaluedMapImpl();
params.add("a", "234");
params.add("b", "567");
ServiceResult sr = wr.queryParams(params).accept(MediaType.APPLICATION_XML_TYPE).get(new GenericType< ServiceResult >() {});
//Ergebnis ausgeben
System.out.println(sr.getMessage());
List< MathResults > mathResults = sr.getErgebnisse();
for (MathResults mr : mathResults) {
System.out.println(mr.getFormel()+" = "+mr.getErgebniss());
}
}
}
Die Ausgabe des WebServices ist wenig überraschend:
Results for Value a = 234, Value b = 567
a + b = 801
a - b = -333
a * b = 132678
FAZIT:
Wie man sieht, ist mit Hilfe der Jersey Klassen eine einfache Abfrage von REST WebServices möglich.
Ausführlichere Beispiele findet man auf den Enterprise Tech Tips Seiten von SUN, in welchem die Twitter Webservices benutzt werden. Dort gibt es dann auch Beispiele für das Benutzen der PUT, POST und DELETE Methoden.
nettes kleines beispiel, interessant das java anscheinend auch gut mit REST kann. Wobei ich immer noch nicht so der super REST fan bin.