10

我正在尝试使用 HttpMethod 的 DELETE 方法。我使用的代码是

response = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Response.class);

我也在使用 JacksonJson 来映射 json。删除功能返回应该映射到响应类的 json。但调用上述行不起作用,并给出内部服务器错误 500 作为响应代码。但是,相同的 API 确实可以在浏览器中与 RESTClient 一起使用,所以我想有些事情我做得不对。

4

2 回答 2

9

经过更多研究后,似乎 DELETE 方法不支持请求正文。由于我们可以控制 REST API,我们已经更改了要作为参数添加的请求正文。完成此更改后,请求正常工作。

希望它可以帮助某人。

于 2013-09-03T05:31:02.660 回答
0

派对有点晚了,我也想在这里加入(记录我的解决方案以供后代使用)

我也在使用spring的rest模板,也尝试使用有效负载执行删除请求,并且我还希望能够从服务器端获取响应代码

免责声明:我使用的是 Java 7

我的解决方案也是基于 SO 上的一个帖子,基本上你最初声明一个 POST 请求并添加一个 http 标头来覆盖请求方法:

RestTemplate tpl = new RestTemplate();

/*
 * http://bugs.java.com/view_bug.do?bug_id=7157360
 * As long as we are using java 7 we cannot expect output for delete
 * */
HttpHeaders headers = new HttpHeaders();
headers.add("X-HTTP-Method-Override", "DELETE");

HttpEntity<Collection<String>> request = new HttpEntity<Collection<String>>(payload, headers);
ResponseEntity<String> exchange = tpl.exchange(uri, HttpMethod.POST, request, String.class);
于 2017-10-17T15:12:26.600 回答