Java Rest - 使用GET方法发送参数化List

时间:2012-07-18 19:17:55

标签: java rest jersey jax-rs

我正在尝试通过GET方法发送List。

这是我的服务器端:

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<User> getUsers(){
    return managment.getUsers();
}

我的客户方:

public static void getUsers(){
    try {
        ClientConfig clientConfig = new DefaultClientConfig();
        clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
        Client client = Client.create(clientConfig);




        WebResource webResource = client
                .resource("http://localhost:8080/Serwer07/user");

        ClientResponse response = webResource.accept("application/json")
                .get(ClientResponse.class);

        if (response.getStatus() != 200) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + response.getStatus());
        }

       List users = response.getEntity(List.class);          
       User user = (User) users.get(0);  //cannot cast
        e.printStackTrace();
    }
}

我遇到从Java Object转换为User的问题。我该如何发送此列表?

提前致谢。

1 个答案:

答案 0 :(得分:5)

使用GenericType

List<User> users = webResource.accept(MediaType.APPLICATION_JSON)
   .get(new GenericType<List<User>>() {});

更新

ClientResponse也会重载getEntity以接受GenericType

List<User> users = response.getEntity(new GenericType<List<User>>() {});