Obtención de cabeceras HTTP utilizando objetos HttpHeaders
Mediante la utilización de la API Java™ para RESTful Web Services (JAX-RS), puede emplear el objeto HttpHeaders para acceder a cabeceras de solicitud.
Acerca de esta tarea
Mediante un objeto HttpHeaders inyectado con el entorno de ejecución de JAX-RS, se conoce la información de las cabeceras de solicitud HTTP y está disponible para su modificación. La anotación @javax.ws.rs.core.Context indica que se ha inyectado un objeto de contexto. La interfaz javax.ws.rs.core.HttpHeaders es la interfaz del objeto que desee inyectar.
Procedimiento
Resultados
El método de recursos utiliza la información de las cabeceras HTTP que se envían en la solicitud para determinar una respuesta apropiada.
Ejemplo
En el ejemplo siguiente se muestra un recurso que devuelve un saludo diferente según el valor de la cabecera Idioma aceptado.
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 Returns the string in the preferred language.
*/
@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 Returns the string in the preferred language.
*/
@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!";
}
}
}