УДАЛИТЬ в Spring RestTemplate с HttpEntity<Список>

Я не знаю, почему мой код не работает, я пытался с Почтальоном и работает нормально:

РАБОТАЕТ ОТЛИЧНО

Но с RestTemplate Я не могу получить ответ, пока он использует одну и ту же конечную точку...

ResponseEntity<String> responseMS  = template.exchange(notificationRestService, HttpMethod.DELETE, new HttpEntity<NotificationRestDTO[]>(arrNotif), String.class);

Я пробовал с List вместо Array[]

Когда я сделал PUT запрос работает нормально, но с одним объектом:

ResponseEntity<String> responseMS = template.exchange(notificationRestService, HttpMethod.PUT, new HttpEntity<NotificationRestDTO>(notificationDTO), String.class);

Любая помощь?? Спасибо!!

1 ответ

Решение

Из комментариев стало ясно, что вы ожидаете, что он вернет ответ 400 Bad Request. RestTemplate увидит их как "ошибки клиента" и выдаст HttpClientErrorException,

Если вы хотите обрабатывать подобные случаи, вы должны перехватить это исключение, например:

try {
    ResponseEntity<String> responseMS  = template.exchange(notificationRestService, HttpMethod.DELETE, new HttpEntity<NotificationRestDTO[]>(arrNotif), String.class);
} catch (HttpClientErrorException ex) {
    String message = ex.getResponseBodyAsString();
}

В этом случае (так как вы ожидаете String), вы можете использовать getResponseBodyAsString() метод.


ResponseEntity будет содержать данные только в том случае, если ваш запрос может быть успешно выполнен (код состояния 2xx, например, 200, 204, ...). Таким образом, если вы ожидаете, что сообщение будет возвращено только в том случае, если запрос не был успешным, вы можете сделать то, что Муад упомянул в комментариях, и вы можете использовать delete() метод RestTemplate,

Другие вопросы по тегам