Client Java RESTful avec Apache HttpClient

Apache HttpClient est une bibliothèque Java de solution robuste et complète permettant d’effectuer des opérations HTTP, notamment le service RESTful. Dans ce didacticiel, nous vous montrerons comment créer un client Java RESTful avec Apache HttpClient , pour exécuter une requête « GET » et « POST ».

1. Obtenez Apache HttpClient

Apache HttpClient est disponible dans le référentiel central Maven, il suffit de le déclarer dans votre fichier Maven pom.xml .

Fichier: pom.xml

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.1.1</version>
    </dependency>

2. Demande GET

Vérifiez à nouveau le dernier service REST.

@Path("/json/product")
public class JSONService {

    @GET
    @Path("/get")
    @Produces("application/json")
    public Product getProductInJSON() {

        Product product = new Product();
        product.setName("iPad 3");
        product.setQty(999);

        return product;

    }
   //...

Apache HttpClient pour envoyer une requête "GET".

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class ApacheHttpClientGet {

    public static void main(String[]args) {
      try {

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet getRequest = new HttpGet(
            "http://localhost:8080/RESTfulExample/json/product/get");
        getRequest.addHeader("accept", "application/json");

        HttpResponse response = httpClient.execute(getRequest);

        if (response.getStatusLine().getStatusCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : "
               + response.getStatusLine().getStatusCode());
        }

        BufferedReader br = new BufferedReader(
                         new InputStreamReader((response.getEntity().getContent())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        httpClient.getConnectionManager().shutdown();

      } catch (ClientProtocolException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();
      }

    }

}

Sortie…​

Output from Server ....

{"qty":999,"name":"iPad 3"}

3. Requête POST

Consultez également le dernier service REST.

@Path("/json/product")
public class JSONService {

        @POST
    @Path("/post")
    @Consumes("application/json")
    public Response createProductInJSON(Product product) {

        String result = "Product created : " + product;
        return Response.status(201).entity(result).build();

    }
   //...

Apache HttpClient pour envoyer une demande "POST".

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;

public class ApacheHttpClientPost {

    public static void main(String[]args) {

      try {

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost(
            "http://localhost:8080/RESTfulExample/json/product/post");

        StringEntity input = new StringEntity("{\"qty\":100,\"name\":\"iPad 4\"}");
        input.setContentType("application/json");
        postRequest.setEntity(input);

        HttpResponse response = httpClient.execute(postRequest);

        if (response.getStatusLine().getStatusCode() != 201) {
            throw new RuntimeException("Failed : HTTP error code : "
                + response.getStatusLine().getStatusCode());
        }

        BufferedReader br = new BufferedReader(
                        new InputStreamReader((response.getEntity().getContent())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        httpClient.getConnectionManager().shutdown();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

      }

    }

}

Sortie…​

Output from Server ....

Product created : Product[name=iPad 4, qty=100]....

===  Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2011/07/RESTful-Java-Client-ApacheHttpClient-Example.zip[RESTful-Java-Client-ApacheHttpClient-Example.zip](9 Ko)

===  Références

. http://jackson.codehaus.org/%20[Jackson Site Officiel]

. http://hc.apache.org/httpcomponents-client-ga/index.html[Apache

HttpClient]. lien://services web/jax-rs/restfull-client-java-avec-java-net-url/[RESTful

Client Java avec java.net.URL]

lien://tag/client/[client]lien://tag/httpclient/[httpclient]lien://tag/jax-rs/[jax-rs]lien://tag/reposant/[reposant]