2017-05-22 88 views
0

我使用具有低於頭Spring框架:獲取狀態響應(如400,500)

import org.springframework.web.client.RestTemplate; 

我想獲取的狀態代碼來寫我的記錄器。我如何獲得restTemplate的響應?

public boolean performTransition(String transitionId,String jiraId){ 

    JiraID id = new JiraID(transitionId); 
    JiraTransition transition = new JiraTransition(); 
    transition.setTransition(id); 

    String transitionUrlFormat = String.format(transitionUrl,jiraId); 

    RestTemplate template = new RestTemplate(); 

    HttpEntity epicEntityRequest = new HttpEntity(transition,createHttpHeaders()); 

    HttpEntity<String> epicEntityResponse= template.exchange(transitionUrlFormat , HttpMethod.POST, epicEntityRequest, String.class); 
    //TODO: verify code 204 
    ResponseEntity<String> responseEntity= (ResponseEntity<String>) epicEntityResponse; 
    epicEntityResponse.getBody(); 
    //System.out.println("LOG" +responseEntity); 
    //responseEntity.getStatusCode(); 
    HttpStatus statusCode = responseEntity.getStatusCode(); 


    return true; 
} 

此外,我想檢查400以上的響應代碼我想寫log.warning()。

+1

顯示您的代碼片段 – pvpkiran

+0

編輯答案。 –

回答

0

問題需要更詳細的闡述。你的意思是這樣的:

ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class); 
int statusCode = response.getStatusCode().value(); 

這給了狀態代碼爲int,你可以這樣做:

if(statusCode > 400){ 
//Log here 
} 

ResponseEntity可以給你一個完整的HTTP響應狀態代碼,身體和頭。

Ofcourse,你需要初始化restTemplate,或者使用默認值:

RestTemplate restTemplate = new RestTemplate(); 

這使用,默認:SimpleClientHttpRequestFactory,或者如果你想要更多的東西來配置你可以使用:HttpComponentsClientHttpRequestFactory其中有許多CONFIGS,像連接池讀取超時,連接超時等。

+0

如果條件引發此錯誤ERR:操作符'>'不能應用於'org.springframework.http.HttpStatus','int' 我得到這個錯誤,我不能將它聲明爲int,所以我改變了變量鍵入HttpStatus – DeathPulse

+0

您可以從statusCode.value()獲取int值; –

+0

@DeathPulse - 有用嗎? –