如何检查RestTemplate
中的SpringBootApplication
是否正确出现错误?
我设法创建了一个ResponseErrorHandler
,但是不确定如何在我的代码中处理该错误。因此,如果发生错误,我想打印一条错误消息,如果一切正常,则处理响应。我怎样才能做到这一点?
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;
}
获取数据:
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*/
服务器:
@PostMapping("/post")
ResponseEntity add(@RequestBody String string) {
if(acceptServerRequest)
return ResponseEntity.ok("Post recieved: " + string);
else
return new ResponseEntity("Error!", HttpStatus.FAILED_DEPENDENCY);
}
最佳答案
而不是像这样
String response = (String) restTemplate.postForObject("http://127.0.0.1:8081/post", httpRequest, String.class);
你可以这样
ResponseEntity<String> response = (String) restTemplate.postForEntity("http://127.0.0.1:8081/post", httpRequest, String.class);
使用此响应对象,您可以获得
response.getStatus()
的状态,该状态会重新调谐HttpStatus
类型的对象,该对象具有各种实用程序方法,例如is2xxSuccessful()
is4xxClientError()
一般可以用来获取状态
关于java - 如何检查Resttemplate是否出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075018/