2016-09-08 7 views
1

Я пытаюсь выполнить запрос HTTP DELETE с телом с Spring RestTemplate с помощью метода обмена, но я всегда получаю 400 Bad Request, например this question. С помощью JavaScript и других инструментов можно сделать этот вызов API с помощью DELETE. Я знаю java < 1.8 doesent поддержка DELETE с телом, но с 1.8 унте: see here. Я использую spring-web-4.2.6.RELEASE с jdk 1.8, поэтому я думаю, что должен быть способ.Spring RestTemplate exchange DELETE с телом 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 

Кто-нибудь знает способ сделать это с пружинным restTemplate?

ответ

2

HTTP DELETE запрос с телом работает отлично с шаблоном отдыха для выпуска Spring 4.2. Может возникнуть проблема с телом запроса, который вы отправляете на ваш сервис. Можете ли вы проверить «jsonInString», если он формирует правильную полезную нагрузку json. Проверьте также заголовки для типа «application/json». Вы можете проверить свою услугу, используя Postman, отправив запрос DELETE.