JAX-RS @Context HttpHeaders始终为null

时间:2017-10-16 18:47:51

标签: java jax-rs resteasy

我有一个使用jax-rs和resteasy的Spring Boot应用程序(3.0.24)。我正试图获取HttpHeaders这样的请求:

    @DELETE
    @Path("/myendpoint")
    public Response myMethod(@Context HttpHeaders headers, @Context HttpServletRequest request) {
       // headers is always null
    }

即使我使用多个标头发出请求,标头参数也始终为null。作为替代方案,我通过HttpServletRequest.getHeaderNames()提取它们,但我真的很想知道为什么不填充标题。

2 个答案:

答案 0 :(得分:1)

发现(令人尴尬,虽然我将责任归咎于作者:))错误。 @Context HttpHeaders headers使用的是Spring的实现,而不是jax-rs。

答案 1 :(得分:0)

你必须使用@Context获取标题,然后检查你想要的那个是否存在。

@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();

}

}