java - 如何检查Resttemplate是否出错?

标签 java rest spring-boot error-handling

如何检查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/

相关文章:

java - 如何使用 Java(Android) 在 Stripe 中为卡充值

java - 如何使用 StringUtils.substringsBetween();?

http - "success, and thus you no longer have access"的 REST HTTP 状态代码

java - 如何通过模型构造函数在 Spring boot 中进行查询

java - Docker compose构建相对路径

java - 如何在@RequestBody 中自定义将字符串转换为枚举?

java - 如何编辑文件中的一行?在Java上

php - 函数 mod_scorm_insert_scorm_tracks "Invalid parameter"

使用 CSOM 或 REST API 同时从 4 个列表检索数据时性能会更好。?

javascript - 网络爬虫遇到javascript