Holen Sie sich den HTTP-Header in JAX-RS

In diesem Lernprogramm zeigen wir Ihnen zwei Möglichkeiten, um den HTTP-Anforderungsheader in JAX-RS abzurufen:

  1. Direkt mit @ HeaderParam einspritzen

  2. 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