我遇到一个奇怪的问题,下面的方法。RestTemplate.exchange()DELETE删除请求正文
@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);
我breakpointed的代码,看起来像我们有一个请求主体,但由于某种原因,它被放在restTemplate.exchange()调用中。任何人之前看过类似的东西?
被丢弃的是去deleteToEe身体方法还是存在于所有情况下(CURL,控制器...)? – d1x
在DELETE方法中传递请求正文是从版本3.0.5开始的支持https://jira.spring.io/browse/SPR-7867 – Arashsoft