Spring RestTemplate 发送列表和获取列表

新手上路,请多包涵

我想用 Spring 的 RestTemplate 做一个服务,在我的服务端代码是这样的:

 @PostMapping(path="/savePersonList")
@ResponseBody
public List<Person> generatePersonList(@RequestBody List<Person> person){
    return iPersonRestService.generatePersonList(person);
}

在客户端,如果我使用此代码调用服务:

 List<Person> p = (List<Person>) restTemplate.postForObject(url, PersonList, List.class);

我不能将 p 对象用作 List<Person> ,它将变成 LinkedHashList 。经过一些研究,我找到了一个解决方案,说我必须使用交换方法调用服务:

 ResponseEntity<List<Person>> rateResponse = restTemplate.exchange(url, HttpMethod.POST, personListResult, new ParameterizedTypeReference<List<Person>>() {});

使用此解决方案,服务器无法获取对象并引发异常,正确的方法是什么?

原文由 Mohammad Mirzaeyan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 688
1 个回答

检查您的代码是否如下所示。这应该工作。

 //header
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
//person list
List<Person> personList = new ArrayList<Person>();
Person person = new Person();
person.setName("UserOne");
personList.add(person);
//httpEnitity
HttpEntity<Object> requestEntity = new HttpEntity<Object>(personList,headers);
ResponseEntity<List<Person>> rateResponse = restTemplate.exchange(url, HttpMethod.POST, requestEntity,new ParameterizedTypeReference<List<Person>>() {});

原文由 abaghel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题