java - 测试http连接
问题描述
我正在制作一个 Spring Boot 应用程序,我希望在其中启用对某些 http 连接的重试。我对这个应用程序如何比较状态代码并触发重试执行的功能有点困惑。对此的任何见解都会有所帮助,我假设有一个检索状态代码的函数,但我找不到它。下面是我创建的课程:
公共类 HttpFailedConnectionRetryPolicy 扩展 ExceptionClassifierRetryPolicy {
@Value("SomeValue")
private Integer maxAttempts;
public HttpFailedConnectionRetryPolicy() {
final NeverRetryPolicy doNotRetry = new NeverRetryPolicy();
final SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
simpleRetryPolicy.setMaxAttempts(maxAttempts);
this.setExceptionClassifier(new Classifier<Throwable, RetryPolicy>() {
@Override
public RetryPolicy classify(Throwable classifiable) {
if (condition) {
return simpleRetryPolicy;
}
return new NeverRetryPolicy();
}
});
}
}
解决方案
如果您的异常是 HttpStatusCodeException 类型,您可以检查 e.getStatusCode()
你的情况应该是
public RetryPolicy classify(Throwable classifiable) {
if (classifiable instanceof HttpStatusCodeException) {
if(((HttpStatusCodeException)classifiable).getStatusCode().value!=404)
return simpleRetryPolicy;
}
return new NeverRetryPolicy();
}
推荐阅读
- html - 保持图像的透明背景?
- javascript - 弹出内容脚本:无法建立连接。接收端不存在
- windows - Blazor 服务器端与 Certbot 的 LetsEncrypt 证书
- javascript - 在 React Native 中为选定图像设置值时找不到变量
- java - 从文本文件中提取 SQL 查询
- python - 在 ImageDataGenerator 中添加自定义预处理函数以进行高斯模糊
- python - 在 python 中构建区分大小写的字典
- spring-data-jpa - JPA Crud存储库查询方法不起作用
- javascript - 我无法使用 GridFS 从 mongodb 下载数据的问题是什么?
- sql - SQL Server 2019 中日期时间的可选字段?