2017-10-16 19 views
0

jax-rs를 resteasy (3.0.24)와 함께 사용하는 스프링 부트 응용 프로그램이 있습니다. 나는 같은 요청에 대한 HttpHeaders을 얻으려고 :JAX-RS @Context HttpHeaders는 항상 null

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

헤더의 PARAM 내가 여러 헤더 요청을 만들고있어 비록 항상 null입니다. 대안으로, 나는 HttpServletRequest.getHeaderNames()을 통해 이들을 추출하지만, 헤더가 채워지지 않은 이유를 알고 싶습니다.

답변

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

} 

}

+0

글을 제대로 읽지 않았습니다. 요청이 들어 오면 변수'headers'는'null'이므로, 아무 것도 쓸 수 없습니다. – user1491636

+0

당신의 요청은 어떻게 보이고 어디에서 요청합니까? – sdfbhg

+0

'curl -X DELETE http : // localhost/myendpoint -H 'content-type : application/json'-d '[ "somePayload"]'' – user1491636

1

. @Context HttpHeaders headers은 jax-rs가 아닌 Spring의 구현을 사용하고있었습니다.