Dans ce tutoriel, nous vous montrons deux méthodes pour obtenir un en-tête de requête HTTP dans JAX-RS:
-
Injecter directement avec
@ HeaderParam
-
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
HttpHeaders JavaDoc]. http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/HeaderParam.html [JAX-RS
@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]