java - 使用 RestTemplate 调用 API 时如何捕获超时异常
问题描述
我有函数调用 api,使用 RestTemplate。我想在超时将返回 null 时捕获异常,这是我的代码:
//Create resttemplate
public List<String> getRoleUser(String username) {
try{
RestTemplate restTemplate = new RestTemplate(getClientHttpRequestFactory());
String[] list = restTemplate.getForObject("(link call api)", String[].class);
return Arrays.asList(list);
}catch (Exception ex){
ex.printStackTrace();
return null;
}
}
//Override timeouts in request factory
private SimpleClientHttpRequestFactory getClientHttpRequestFactory()
{
SimpleClientHttpRequestFactory clientHttpRequestFactory
= new SimpleClientHttpRequestFactory();
//Connect timeout
clientHttpRequestFactory.setConnectTimeout(10_000);
//Read timeout
clientHttpRequestFactory.setReadTimeout(10_000);
return clientHttpRequestFactory;
}
但它不起作用。那么,超时时如何返回null?
解决方案
您应该捕获一个 HttpStatusCodeException 异常:
try {
restTemplate.exchange(...);
} catch (HttpStatusCodeException exception) {
int statusCode = exception.getStatusCode().value();
...
}
推荐阅读
- python-3.x - 在 Python Django 中为事件实现提醒功能
- c++ - C++:删除对象而不调用析构函数
- node.js - 出现此错误时我该怎么办:var opts = Object.create(options || null)?
- hibernate - SpringBoot HikariCP Maxscale 选择查询不发送到从站
- angular - 将所有请求重定向到特定目录而不更改 URL .htaccess(部署 Angular 项目)
- python - Scipy UnivariateSpline 错误:(m>k) 隐藏 m 失败:fpcurf0:m=3
- reactjs - 反应和反应管理员之间的区别
- javascript - 如何设置两个除法元素平行?
- postgresql - 收到错误“重复键值违反唯一约束 postgres”
- android - RTL布局的反向进入和退出动画 - Android导航组件