In diesem Lernprogramm zeigen wir Ihnen zwei Möglichkeiten, um den HTTP-Anforderungsheader in JAX-RS abzurufen:
-
Direkt mit @ HeaderParam einspritzen
-
Pragmatisch über @ Context
1. @HeaderParam-Beispiel
In diesem Beispiel erhält es den Browser " user-agent " vom Anforderungsheader.
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(); } }
Zugriff über URI-Muster „ /users/get “, mit FireFox, siehe folgendes Ergebnis:
addUser is called, userAgent : Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
2. @Context-Beispiel
Alternativ können Sie @ kontext verwenden, um "javax.ws.rs.core.HttpHeaders" direkt abzurufen. Die entsprechende Version finden Sie im Browser " 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(); } }
Zugriff über URI-Muster „ /users/get “, mit Google Chrome, siehe folgendes Ergebnis:
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
-
Alle Anforderungsheader auflisten ** Sie können alle verfügbaren HTTP-Anforderungsheader mit folgendem Code auflisten:
for(String header : headers.getRequestHeaders().keySet()){ System.out.println(header); }
Quellcode herunterladen
Download it - JAX-RS-Get-HTTP-Header-Example.zip (6 KB)
Referenzen
HttpHeaders JavaDoc]. http://jsr311.java.net/nonav/releases/1.1/javax/ws/rs/HeaderParam.html
@HeaderParam JavaDoc]. http://de.wikipedia.org/wiki/List of HTTP header fields[Vollständige Liste von
HTTP-Header-Felder]