2017-10-16 112 views
0

我有一個使用jax-rs和resteasy(3.0.24)的Spring Boot應用程序。我試圖讓HttpHeaders了這樣的請求:JAX-RS @Context HttpHeaders始終爲空

@DELETE 
    @Path("/myendpoint") 
    public Response myMethod(@Context HttpHeaders headers, @Context HttpServletRequest request) { 
     // headers is always 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正在使用Spring的實現,而不是來自jax-rs。