как передать List <Objects>как тело в POST METHOD (RestTemplate) - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сделать запрос Post с помощью restTemplate, проблема в том, что 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 в тело запроса?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вам нужно передать ваши данные в HttpEntity. Вы можете использовать ObjectMapper из библиотеки jackson-databind для преобразования вашего списка в 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.

0 голосов
/ 26 апреля 2018

Для запроса 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);
}
...