2017-10-16 10 views
0

J'ai une application Spring Boot en utilisant jax-rs avec resteasy (3.0.24). J'essaie d'obtenir le HttpHeaders pour une demande en tant que telle:JAX-RS @Context HttpHeaders toujours null

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

PARAM en-têtes est toujours nulle, même si je fais la demande avec plusieurs têtes. Comme alternative, je les extrait via le HttpServletRequest.getHeaderNames(), mais j'aimerais vraiment savoir pourquoi les en-têtes ne sont pas remplis.

Répondre

0

Vous devez obtenir les en-têtes en utilisant le @Context puis vérifiez si celui que vous voulez est là.

@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

Vous n'avez pas lu le message correctement. La variable 'headers' est' null' quand la requête arrive, donc je ne peux pas l'utiliser pour quelque chose. – user1491636

+0

bien comment votre demande ressemble et où vous demandez de – sdfbhg

+0

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

1

trouvé le (gênant, bien que je détourner le blâme à l'auteur :)) erreur. @Context HttpHeaders headers utilisait l'implémentation de Spring et non celle de jax-rs.