2013-07-17 17 views

回答

2

如果你想獲得訪問特定@HeaderParamString,使用由@Juned阿赫桑或@DJ Spiess提供的答案。如果你想將它們注入POJO,我會推薦在2.x中使用Jersey的@BeanParam

例如:

@Path("/foo") 
public class FooResource { 
    @GET 
    @Path("/bar") 
    public void bar(@BeanParam MyBean myBean) { 
     // Do something 
    } 
} 

public class MyBean { 
    private String uaCompatible; 

    public MyBean(@HeaderParam("X-UA-Compatible") String uaCompatible) { 
     this.uaCompatible = uaCompatible; 
    } 

    public String getUacompatible() { 
     return this.uaCompatible; 
    } 
} 

@BeanParam可以與@InjectParam爲澤西1.x的(> = 1.4)或@Inject在1.x中早於1.4代替。如果您使用Spring等依賴注入框架,也可以使用javax- @Inject

+0

感謝,這正是我需要的,我將需要從三個不同的頭創建一個複合實體! –

0

是的,你可以這樣做使用@HeaderParams

1

是的,你會不喜歡這樣。 (從http://www.mkyong.com/webservices/jax-rs/get-http-header-in-jax-rs/

@Path("/users") 
public class UserService { 

@GET 
@Path("/get") 
public Response addUser(@HeaderParam("user-agent") String userAgent) { 
     return Response.status(200) 
      .entity("addUser is called, userAgent : " + userAgent) 
      .build(); 

    } 

} 
3

如果您正在使用的球衣1.x的,那麼你可以使用@InjectParam, 但我建議你升級到2.x和開始使用@BeanParam