【发布时间】:2016-01-12 19:05:41
【问题描述】:
我在使用以下方法时遇到了一个奇怪的问题。
@Override
public String deleteToEe(String body) {
logger.debug("Request body");
logger.debug(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
headers.add("partner", "test");
headers.add("api_key", "certxxxx");
HttpEntity<String> request = new HttpEntity<String>(body, headers);
ResponseEntity<String> result = null;
try {
result = restTemplate.exchange(targetUrl, HttpMethod.DELETE, request, String.class);
} catch (RestClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result.getBody();
}
当我通过 Postman 访问控制器请求映射来触发此方法时,它可以工作。但是当测试人员通过他们的集成测试触发这个方法时,或者当我使用 curl 触发这个方法时
curl -X DELETE -H "Accept: application/json" -H "Content-type: application/json" -d "{"userName": "21", "courseId": "104882_bfaculty3_1024", "isbn": "9780323055", "schoolUserId": "1234" }" http://localhost:8080//api/provision
此时代码中出现空指针异常
result = restTemplate.exchange(targetUrl, HttpMethod.DELETE, request, String.class);
我已经为代码设置了断点,看起来我们有一个请求正文,但由于某种原因,它在 restTemplate.exchange() 调用中被删除了。有人见过这样的东西吗?
【问题讨论】:
-
是删除了进入 deleteToEe 方法的主体还是在所有情况下都存在(CURL、控制器...)?
-
从 3.0.5 版开始支持在 DELETE 方法中传递请求正文 jira.spring.io/browse/SPR-7867
-
你也可以发布异常堆栈跟踪吗?正如@Arashsoft 所说,这应该早就得到支持了。
-
转到邮递员顶部并打开控制台并将控制台日志添加到问题中