Spring RestTemplate交换DELETE与body jdk 1.8

时间:2016-09-08 20:04:04

标签: java spring rest resttemplate spring-web

我正在尝试通过交换方法使用Spring RestTemplate与body进行HTTP DELETE请求,但我总是得到一个400 Bad Request,如this question。使用JavaScript和其他工具,可以使用DELETE进行此API调用。 我知道java< 1.8 doesent支持DELETE与body,但是1.8它应该能够:see here。我正在使用spring-web-4.2.6.RELEASE和jdk 1.8,所以我认为必须有办法。

我的代码:

public DealResponse closePosition(DealCloseRequest dealCloseRequest) {
    try {
        ObjectMapper mapper = new ObjectMapper();
        //Object to JSON in String
        String jsonInString = mapper.writeValueAsString(dealCloseRequest);

        HttpEntity<String> entity = new HttpEntity<String>(jsonInString, this.headers);
        //execute request
        ResponseEntity<DealResponse> response = restTemplate.exchange("https://" + this.domain + "/gateway/deal/positions/otc", HttpMethod.DELETE, entity, DealResponse.class);
        //return filled DealResponse object
        return response.getBody();
    } catch (JsonProcessingException e) {
        this.logger.warn("could not close Position because: "+e);
        return null;
    }
}

错误讯息:

org.springframework.web.client.HttpClientErrorException: 400 Bad Request

有没有人知道使用spring restTemplate执行此操作的方法?

1 个答案:

答案 0 :(得分:3)

使用正文的HTTP DELETE请求与Spring 4.2版本的rest模板一起正常工作。您发送给您的服务的请求正文可能存在一些问题。你能查一下&#34; jsonInString&#34;如果它正在形成正确的json有效载荷。检查标题以及#34; application / json&#34;类型。您可以通过发送DELETE请求使用Postman验证您的服务。