2016-10-06 2 views
0

Ich versuche, eine POST-Anforderung mit der folgenden Methode zu senden und den HTTP-Antwortcode beim Senden der Anforderung zurückzugeben.postForObject von RestTemplate, das sofort nach dem Senden der Anforderung beendet wird

-Code in Frage:

private ClientHttpRequestFactory getClientHttpRequestFactory() { 
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(); 
    clientHttpRequestFactory.setConnectTimeout(timeout); 
    return clientHttpRequestFactory; 
} 

public int sendRequest() { 
    RestTemplate request = new RestTemplate(getClientHttpRequestFactory()); 
    String URL = buildURL(); 
    HttpHeaders headers = buildHeaders(); 
    validatePayload(); 
    HttpEntity<String> postRequest = new HttpEntity<String>(requestPayload, headers); 
    return request.postForObject(URL, postRequest, ResponseEntity.class).getStatusCodeValue(); 
} 

Ich erzeuge eine ClientHttpRequestFactory so ich in der Lage bin ein Timeout zu setzen, und schließlich eine POST unter Verwendung RestTemplate des postForObject senden. Mein Problem hier ist, dass das Programm sofort beendet wird (es läuft in der Befehlszeile) nach dem Senden der POST-Anfrage, und ich bin nicht in der Lage, etwas mit dem Antwortcode zu tun. Ich kann online keine Dokumentation finden, die besagt, dass dies für postForObject erwartetes Verhalten ist. Gibt es hier etwas, was ich anders machen sollte?

Danke!

Antwort

0

Das Problem bestand darin, dass PostForObject() Null zurückgab. Ich hatte später einen Ausnahme-Catcher, der das Problem verdeckte.

Ich benutzte stattdessen postForEntity, die nicht null zurück, und ich konnte den folgenden Block einen HTTP-Statuscode erhalten mit:

ResponseEntity<String> re = request.postForEntity(URL, postRequest, String.class); 
HttpStatus status = re.getStatusCode(); 
statusCode = status.value(); 
Verwandte Themen