Obtenir un en-tête HTTP dans JAX-RS

Dans ce tutoriel, nous vous montrons deux méthodes pour obtenir un en-tête de requête HTTP dans JAX-RS:

  1. Injecter directement avec @ HeaderParam

  2. De manière pragmatique via @ Context

1. Exemple @HeaderParam

Dans cet exemple, il obtient le navigateur « user-agent » à partir de l’en-tête de la demande.

import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("/users")
public class UserService {

    @GET
    @Path("/get")
    public Response addUser(@HeaderParam("user-agent") String userAgent) {

        return Response.status(200)
            .entity("addUser is called, userAgent : " + userAgent)
            .build();

    }

}

Accès via le modèle d’URI “ /users/get “, avec FireFox, voir le résultat suivant:

addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0

2. Exemple @Context

Vous pouvez également utiliser @ Context pour obtenir« javax.ws.rs.core.HttpHeaders », voir la version équivalente pour obtenir le navigateur « user-agent ».

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;

@Path("/users")
public class UserService {

    @GET
    @Path("/get")
    public Response addUser(@Context HttpHeaders headers) {

        String userAgent = headers.getRequestHeader("user-agent").get(0);

        return Response.status(200)
            .entity("addUser is called, userAgent : " + userAgent)
            .build();

    }

}

Accès via le modèle d’URI “ /users/get “, avec Google Chrome, voir le résultat suivant:

addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30
    (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30
  • Lister tous les en-têtes de requête ** Vous pouvez lister tous les en-têtes de requête HTTP disponibles via le code suivant:

for(String header : headers.getRequestHeaders().keySet()){
    System.out.println(header);
}

Télécharger le code source

Téléchargez-le - lien://wp-content/uploads/2011/07/JAX-RS-Get-HTTP-Header-Example.zip[JAX-RS-Get-HTTP-Header-Example.zip](6 Ko)

Références

@HeaderParam JavaDoc]. http://en.wikipedia.org/wiki/List of HTTP header fields[Liste complète des

Champs d’en-tête HTTP]

lien://tag/en-tête http/[en-tête http]lien://tag/jax-rs/[jax-rs]