我有一个使用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()
提取它们,但我真的很想知道为什么不填充标题。
答案 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();
}
}