2016-10-06 311 views
0

我試圖用以下方法發送POST請求,並在發送請求時返回HTTP響應代碼。RestTemplate的postForObject在發送請求後立即終止

代碼中的問題:

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

我產生ClientHttpRequestFactory所以我能夠設置超時,並最終通過RestTemplate的postForObject發送POST。我的問題在於程序在發送POST請求時立即終止(它在命令行中運行),並且我無法對響應代碼做任何事情。我在網上找不到任何文檔說這是postForObject的預期行爲,這裏有什麼我應該做的不同嗎?

謝謝!

回答

0

問題在於postForObject()返回null。我後來發現了一個異常捕捉器,這就隱藏了這個問題。

我代替postForEntity,這並沒有返回null,我能夠使用以下塊獲得HTTP狀態代碼:

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