我正在使用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()。
答案 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
它有许多配置,如连接池等,读取超时,连接超时等。