获取状态响应(如400,500)

时间:2017-05-22 11:33:32

标签: spring resttemplate

我正在使用spring Framework,其中包含以下标题:

import org.springframework.web.client.RestTemplate;

我想获取状态代码来编写我的Logger。我如何从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 个答案:

答案 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响应状态代码,正文和标题。

当然,您需要使用默认值初始化restTemplate

RestTemplate restTemplate = new RestTemplate();

这使用,默认:SimpleClientHttpRequestFactory,或者如果你想要更可配置的东西,你可以使用:HttpComponentsClientHttpRequestFactory它有许多配置,如连接池等,读取超时,连接超时等。