2016-09-08 5 views
1

Ich versuche, eine HTTP-DELETE-Anfrage mit Körper mit Spring RestTemplate über Exchange-Methode, aber ich bekomme immer eine 400 Bad Anfrage wie this question. Mit JavaScript und anderen Tools ist es möglich, diese API mit DELETE aufzurufen. Ich weiß, Java < 1.8 doesent Unterstützung DELETE mit Körper, aber mit 1.8 sollte es möglich sein: see here. Ich benutze spring-web-4.2.6.RELEASE mit jdk 1.8, also denke ich, dass es einen Weg geben muss.Spring RestTemplate Austausch DELETE mit Körper jdk 1.8

Mein Code:

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; 
    } 
} 

Fehlermeldung:

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

Kennt jemand eine Möglichkeit, dies mit Feder restTemplate zu tun?

Antwort

2

HTTP-DELETE-Anfrage mit Körper funktioniert gut mit Rest-Vorlage für Frühjahr 4.2-Version. Möglicherweise gibt es ein Problem mit der Anfrage, die Sie an Ihren Dienst senden. Können Sie "jsonInString" überprüfen, wenn es die richtige Json-Payload bildet? Überprüfen Sie auch die Header für den Typ "application/json". Sie können Ihren Dienst mit Postman überprüfen, indem Sie eine DELETE-Anfrage senden.

Verwandte Themen