前言
在使用 retrofit 的时候,碰到这样一个问题,所有的网络接口都要进行网络请求错误判断而进行错误处理,也就是说每个 Callback 都要做同一件事情,这样就平白添加了许多无用的代码。以下是怎么对 retrofit 的 Callback 进行统一的错误处理
知识了解
retrofit 是对 okHttp 进行的封装,okHttp 请求返回的状态码为:
HTTP Status | 说明 |
---|---|
1xx | 代表请求已被接受,需要继续处理 (临时相应) |
2xx | 代表请求已成功被服务器接收、理解、并接受 |
3xx | 代表需要客户端采取进一步的操作才能完成请求 |
4xx | 代表了客户端看起来可能发生了错误,妨碍了服务器的处理 |
5xx | 表示服务器无法完成明显有效的请求 |
想要知道 HTTP Status 的具体说明请查看网址:HTTP 状态码-维基百科 ,该网址对 HTTP 状态码对每个大状态下各个小状态也进行了详细说明,能够更好的理解 HTTP 的状态码的意义。
优化前
使用过 Retrofit 的网友们,我们都知道,onResponse 方法一般是在网络请求后,有返回信息( HTTP 五类状态码 )时回调;而 onFailure 方法据我了解一般是由于请求延迟、超时,或者网络状态差等网络问题导致请求失败时回调。以下是我们刚接触retrofit时的写法:
UserAPI.signin(entity, new Callback<LoginEntity>() {
@Override
public void onResponse(Call< LoginEntity > call, Response< LoginEntity > response) {
if (response.isSuccessful()){
//1⃣️接口请求成功,对返回的数据进行处理
} else{
//2⃣️对后台返回的请求错误,进行处理
}
}
@Override