我正在尝试使用restTemplate发出Post请求,问题是API正在接受正文中的List<Users>
作为POST请求
public class Users {
String id;
String name;
String gender;
}
我已将元素添加为
List<Users> userList=new ArrayList<Users>();
userList.add(new Users("1","AA","Male"));
userList.add(new Users("2","BB","Male"));
userList.add(new Users("3","CC","Female"));
AS
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.postForEntity(URL.toString(), HttpMethod.POST, entity, String.class);
这里我应该如何将userList传递给请求Body?
答案 0 :(得分:0)
对于Post请求,您可以使用方法使用“method = RequestMethod.POST”或@POST注释。 对于列表对象,请检查以下代码。它会起作用。
public ResponseEntity<List<Users>> methodName(@QueryParam("id") String id){
List<Users> userList=new ArrayList<Users>();
userList.add(new Users("1","AA","Male"));
userList.add(new Users("2","BB","Male"));
userList.add(new Users("3","CC","Female"));
return new ResponseEntity<List<Users>>(userList, HttpStatus.OK);
}
答案 1 :(得分:0)
您需要在HttpEntity中传递数据。您可以使用来自jackson-databind lib的ObjectMapper将您的列表转换为json。
String userJsonList = objectMapper.writeValueAsString(userList);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(userJsonList, headers);
ResponseEntity<String> response = restTemplate.postForEntity(URL.toString(), HttpMethod.POST, entity, String.class);
所以基本上它会将数据作为json字符串传递。