使用HttpEntity <list>在Spring RestTemplate中删除

时间:2017-02-27 11:38:46

标签: spring spring-boot resttemplate spring-rest

我不知道为什么我的代码不起作用,我已经尝试过Postman并且工作正常:

WORKS FINE

但是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 个答案:

答案 0 :(得分:3)

从评论中可以清楚地看到,您希望它返回 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,...)。因此,如果您只希望在请求未成功时返回消息,您实际上可以执行Mouad在评论中提到的内容,并且您可以使用delete()的{​​{1}}方法。