HTTP-Header mit HttpHeaders-Objekten abrufen
Mit JAX-RS (Java™ API for RESTful Web Services) können Sie das HttpHeaders-Objekt verwenden, um auf Anforderungsheader zuzugreifen.
Informationen zu diesem Vorgang
Wenn Sie ein von der JAX-RS-Laufzeitumgebung eingefügtes HttpHeaders-Objekt verwenden, hat das den Vorteil, dass der HTTP-Anforderungsheader bekannt ist und geändert werden kann. Die Annotation "@javax.ws.rs.core.Context" zeigt an, dass ein Kontextobjekt eingefügt ist. Die Schnittstelle "javax.ws.rs.core.HttpHeaders" ist die Schnittstelle des Objekts, das Sie einfügen möchten.
Vorgehensweise
Ergebnisse
Die Ressourcenmethode verwendet Informationen von den HTTP-Headern, die in der Anforderung gesendet werden, um eine entsprechende Antwort festzulegen.
Beispiel
Das folgende Beispiel veranschaulicht eine Ressource, die je nach Einstellung des Accept-Language-Headers unterschiedliche Begrüßungen zurückgibt.
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@Path("/contexttest")
public class HelloWorldInMyLanguage {
/**
* @return - Gibt die Zeichenfolge in der bevorzugten Sprache zurück.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getGreeting(@Context HttpHeaders httpHeaders) {
List<Locale> locales = httpHeaders.getAcceptableLanguages();
if (locales.size() == 0) {
return "Hello!";
}
Locale locale = locales.get(0);
if (locale.equals(Locale.FRENCH)) {
return "Bonjour!";
} else if (locale.equals(Locale.GERMAN)) {
return "Guten Tag!";
} else {
return "Hello!";
}
}
}
import java.util.List;
import java.util.Locale;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
@Path("/contexttest")
public class HelloWorldInMyLanguage {
@Context
HttpHeaders httpHeaders;
/**
* @return - Gibt die Zeichenfolge in der bevorzugten Sprache zurück.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getGreeting() {
List<Locale> locales = httpHeaders.getAcceptableLanguages();
if (locales.size() == 0) {
return "Hello!";
}
Locale locale = locales.get(0);
if (locale.equals(Locale.FRENCH)) {
return "Bonjour!";
} else if (locale.equals(Locale.GERMAN)) {
return "Guten Tag!";
} else {
return "Hello!";
}
}
}