使用RestTemplate - 如何将参数中的List或Array从客户端传递到服务器

时间:2015-02-03 03:05:33

标签: spring resttemplate

我有一个List<Integer>我想在参数中发送到服务器,Spring是否有任何方式为此提供支持?

我尝试使用以下代码,

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, ArrayUtils.toPrimitive(cartItemsId.toArray(new Integer[cartItemsId.size()])));

但它向服务器发送类似的内容:

http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId=%5BI@18275d8c

如果我使用相同的问题:

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, cartItemsId);

restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={cartItemsId[]}", 
            HttpMethod.POST, httpEntity, Void.class, cartItemsId.toArray(new Integer[cartItemsId.size()]));

有没有办法可以使用参数将此List或Array发送到服务器?

1 个答案:

答案 0 :(得分:5)

通过加入String的元素构建List<Integer>并将其作为uri变量提供。

String listOfIds = cartItemsId.stream().map(Object::toString).collect(Collectors.joining(","));
restTemplate.exchange("http://xxx.xx.xx.xx:8081/api/cart-items?cartItemsId={ids}",
    HttpMethod.POST, httpEntity, Void.class, listOfIds);
相关问题