捕获到ResourceAccessException而不是HttpServerErrorException
创始人
2024-12-25 00:00:14
0

在Spring Boot应用程序中使用RestTemplate时,当尝试与远程Web服务进行通信时,我们可能会遇到异常。其中之一是HttpServerErrorException,它表示HTTP 5xx错误代码(服务器错误)。在某些情况下,如果不正确配置RestTemplate,则可能会捕获到一个与HttpServerErrorException类似但不同的异常,即ResourceAccessException。这通常发生在以下两种情况下:

  1. 远程服务繁忙并超时。
  2. 错误的URL地址或DNS解析问题。

要避免捕获到ResourceAccessException,我们可以按如下方式配置RestTemplate:

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder, HttpClient httpClient) {
    return builder
        .requestFactory(() -> new HttpComponentsClientHttpRequestFactory(httpClient))
        .errorHandler(new ResponseErrorHandler() {
            @Override
            public boolean hasError(ClientHttpResponse response) throws IOException {
                return response.getStatusCode().is5xxServerError();
            }

            @Override
            public void handleError(ClientHttpResponse response) throws IOException {
                throw new HttpServerErrorException(response.getStatusCode());
            }
        })
        .build();
}

在这个配置中,我们使用一个自定义的HttpComponentsClientHttpRequestFactory,它基于自定义的HttpClient(在此示例中省略实现)构建。此外,我们还提供了一个自定义的ResponseErrorHandler,该处理程序检查HTTP响应是否为5xx(服务器错误),如果是,则抛出HttpServerErrorException。

相关内容

热门资讯

第十个漏洞!德扑ai人工智能(... 第十个漏洞!德扑ai人工智能(德州辅助软件线上)辅助透视(真的有挂)-哔哩哔哩 科技详细教程;757...
1个苹果版!微扑克使用方法(有... 1个苹果版!微扑克使用方法(有挂)透视辅助(真实有挂)-哔哩哔哩是一款可以让一直输的玩家,快速成为一...
7苹果版(aapoker有挂)... 7苹果版(aapoker有挂)外挂透明挂辅助软件(辅助挂)黑科技教程(了解有挂)-哔哩哔哩;aapo...
第6机器人!边锋麻将有挂吗(辅... 第6机器人!边锋麻将有挂吗(辅助挂)太坑了其实真的有挂(有挂功能)-哔哩哔哩是一款可以让一直输的玩家...
2个下载!德扑自定义房间(智能... 2个下载!德扑自定义房间(智能系统)软件透明挂(有挂详情)-哔哩哔哩是由北京得德扑自定义房间黑科技有...
1个真的有挂!wepoke有科... 1个真的有挂!wepoke有科技(游戏辅助工具)辅助挂(有挂教学)-哔哩哔哩;(需添加指定薇1367...
4苹果版!佛手在线外挂有风险嘛... 4苹果版!佛手在线外挂有风险嘛(透视)太坑了其实真的有挂(有挂实锤)-哔哩哔哩是一款可以让一直输的玩...
3规律(新版Wepoke)外挂... 3规律(新版Wepoke)外挂透明挂辅助软件(辅助挂)细节揭秘(有挂技巧)-哔哩哔哩1、很好的工具软...
七个技术!德扑人工智能(机器人... 七个技术!德扑人工智能(机器人软件开发)辅助透视(有挂工具)-哔哩哔哩1、不需要AI权限,帮助你快速...
第五个大厅房!wpk微扑克免费... 第五个大厅房!wpk微扑克免费辅助(输赢机制)其实真的有挂(有挂透视)-哔哩哔哩;最新版2024是一...