首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpMethod.Delete不支持Spring-Android的RestTemplate

HttpMethod.Delete不支持Spring-Android的RestTemplate
EN

Stack Overflow用户
提问于 2013-08-30 19:49:42
回答 2查看 11.2K关注 0票数 10

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

代码语言:javascript
复制
response = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Response.class);

我也在使用JacksonJson来映射json。删除功能返回应该映射到Response类的json。但是调用上面的代码行不通,会给出响应代码为500的内部服务器错误。但是,同样的应用程序接口可以在浏览器中与RESTClient一起工作,所以我猜有一些我没有正确做的事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 13:31:03

经过进一步的研究,发现DELETE方法似乎不支持请求体。因为我们可以控制REST API,所以我们更改了请求正文,将其作为参数添加。完成此更改后,请求即可正常工作。

希望这能帮助到别人。

票数 9
EN

Stack Overflow用户

发布于 2017-10-17 23:12:27

我也想在这里插一句(为后人记录我的解决方案)

我也在使用spring的rest模板,还试图使用有效负载执行一个delete请求,我也希望能够从服务器端获得响应代码

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

我的解决方案也是基于这里的post,所以,基本上你最初声明一个POST请求并添加一个http头来覆盖请求方法:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18532240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档