🍜 成功/失败条件
Forest 请求每次发送后都会判断是否成功 (不成功即失败)
默认的请求成功条件如下
[x] 没有异常: 包括网络连接不通、IO错误、超时等异常
[x] 响应状态码在正常范围内: >= 100
并且 < 400
一般成功的状态码为200
, 所以默认成功条件满足绝大多数场景,但也免不了有些API接口不以此为标准,比如400
也为正常状态码; 还有状态码为 200
, 但返回JSON数据中的状态为失败也为失败。
为适应这种,Forest 提供了可自定义的成功/失败条件
successWhen(SuccessWhen successWhen)
设置成功条件: 用于判断请求是否成功/失败
- 参数
successWhen
: SuccessWhen 接口实现类实例
Forest.post("/")
// 设置成功/失败条件
// 返回 true 为成功,false 为失败
.successWhen(((req, res) -> {
// req 为Forest请求对象,即 ForestRequest 类实例
// res 为Forest响应对象,即 ForestResponse 类实例
return res.noException() && // 请求过程没有异常
res.statusOk() && // 状态码在 100 ~ 399 范围内
res.statusIsNot(203); // 但不能是 203
}))
.onError((ex, req, res) -> {
System.out.println("失败!");
})
.exeute();
// 若服务端返回的状态码为 203,
// 即便请求过程都成功,
// 也会被认为是失败,并执行 onError
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
使用自定义成功/失败条件实现类
setSuccessWhen(Class<? extends SuccessWhen> conditionClass)
设置成功条件,用于判断请求是否成功/失败
- 参数
conditionClass
: SuccessWhen 实现类的 Class 对象
先定义成功/失败条件实现类
// 自定义成功/失败条件实现类
// 需要实现 SuccessWhen 接口
public class MySuccessCondition implements SuccessWhen {
/**
* 请求成功条件
* @param req Forest请求对象
* @param res Forest响应对象
* @return true 请求成功,false 请求失败
*/
@Override
public boolean successWhen(ForestRequest req, ForestResponse res) {
return res.noException() && // 请求过程没有异常
res.statusOk() && // 状态码在 100 ~ 399 范围内
res.statusIsNot(203); // 但不能是 203
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
通过 Forest 请求对象的setSuccessWhen(Class<? extends SuccessWhen> conditionClass)
方法设置该条件类
Forest.post("/")
// 设置成功/失败条件实现类
.successWhen(MySuccessCondition.class)
.onError((ex, req, res) -> {
System.out.println("失败!");
})
.exeute();
// 若服务端返回的状态码为 203,
// 即便请求过程都成功,
// 也会被认为是失败,并执行 onError
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
帮助我们改善此文档 (opens new window)
上次更新: 2024/02/27, 12:43:35