[英]How to check if Resttemplate gets error?
How can I check if I get an error with RestTemplate
in my SpringBootApplication
properly? 如何检查SpringBootApplication
RestTemplate
是否出现错误? I managed to create an ResponseErrorHandler
but am not sure how to handle that error in my code. 我设法创建了ResponseErrorHandler
但是不确定如何在我的代码中处理该错误。 So I want to print an error message if an error occured and else process the response if everything is ok. 因此,如果发生错误,我想打印一条错误消息,如果一切正常,则处理响应。 How can I do that? 我怎样才能做到这一点?
ErrorHandler: 的ErrorHandler:
public class MyErrorHandler implements ResponseErrorHandler {
private boolean error;
@Override
public void handleError(ClientHttpResponse response) throws IOException {
error = false;
if(response.getStatusCode() == HttpStatus.FAILED_DEPENDENCY) {
error = true;
JOptionPane.showMessageDialog(null, "Error " + response.getStatusCode() + ": " /*Can I print my errormessage here?*/);
}
}
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
return error;
}
Getting Data: 获取数据:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
headers.add("Accept", MediaType.TEXT_PLAIN_VALUE);
HttpEntity<String> httpRequest = new HttpEntity<String>(request, headers);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(new MyErrorHandler());
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
String response = (String) restTemplate.postForObject("http://127.0.0.1:8081/post", httpRequest, String.class);
/*If error occured, print errormessage, else do something*/
Server: 服务器:
@PostMapping("/post")
ResponseEntity add(@RequestBody String string) {
if(acceptServerRequest)
return ResponseEntity.ok("Post recieved: " + string);
else
return new ResponseEntity("Error!", HttpStatus.FAILED_DEPENDENCY);
}
Instead of doing like this 而不是这样
String response = (String) restTemplate.postForObject("http://127.0.0.1:8081/post", httpRequest, String.class);
You can do like this 你可以这样
ResponseEntity<String> response = (String) restTemplate.postForEntity("http://127.0.0.1:8081/post", httpRequest, String.class);
With this response object you can get status doing response.getStatus()
which retuns an object of type HttpStatus
which has various utility methods like 有了这个响应对象,你可以得到这样的地位response.getStatus()
这retuns类型的对象HttpStatus
拥有各种实用方法,如
is2xxSuccessful()
is4xxClientError()
Which can be used to get the status's in general 通常可以用来获取状态
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.