在JAX-RS中获取请求头信息的方法
- @HeaderParam注解,可以直接将请求头中的特定值注入到方法参数中,代码示例:
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();
}
}
- 使用@Context注解注入HttpHeaders对象,然后使用该对象提供的方法来获取请求头信息
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();
}
}
HttpHeaders类还提供了一些其他有用的方法来获取特定的请求头信息,例如:
- getAcceptableLanguages():获取请求头中的Accept-Language信息,返回一个Locale对象的列表。
- getCookies():获取请求头中的Cookie信息。
- getLength():获取请求头中的Content-Length信息。