DELETE in Spring RestTemplate with HttpEntity<List>

房东的猫 提交于 2019-12-11 04:32:14

问题


I don't know why my code is not working, I've tried with Postman and works fine:

But with RestTemplate I can´t get a response while it´s using the same endpoint... .

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

I've tried with List instead Array[]

When i made a PUT request it´s works fine but with one object:

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

Any help?? Thanks!!


回答1:


From the comments it became clear that you're expecting it to return a 400 Bad Request response. RestTemplate will see these as "client errors" and it will throw a HttpClientErrorException.

If you want to handle cases like this, you should catch this exception, for example:

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

In this case (since you expect a String), you can use the getResponseBodyAsString() method.


The ResponseEntity will only contain the data in case your request can be executed successfully (2xx status code, like 200, 204, ...). So, if you only expect a message to be returned if the request was not successfully, you can actually do what Mouad mentioned in the comments and you can use the delete() method of the RestTemplate.



来源:https://stackoverflow.com/questions/42484852/delete-in-spring-resttemplate-with-httpentitylist

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!