feat(network): 优化网络异常处理和环境切换
- 新增网络异常统一处理逻辑 - 实现环境切换功能 - 更新 API接口 - 重构部分代码以提高可维护性
This commit is contained in:
@ -23,6 +23,7 @@ import com.za.bean.ReportHistoryRequest
|
||||
import com.za.bean.ReportInfoRequest
|
||||
import com.za.bean.ReportItem
|
||||
import com.za.bean.SettleInfoRequest
|
||||
import com.za.bean.TaskNotesBean
|
||||
import com.za.bean.TaskSettlementAndTraceBean
|
||||
import com.za.bean.UpdateVersionBean
|
||||
import com.za.bean.UpdateVersionRequest
|
||||
@ -61,6 +62,7 @@ import com.za.bean.request.SaveEleOrderRequest
|
||||
import com.za.bean.request.SwitchTaskRequest
|
||||
import com.za.bean.request.TaskFinishRequest
|
||||
import com.za.bean.request.TaskFinishResponse
|
||||
import com.za.bean.request.TaskNotesRequest
|
||||
import com.za.bean.request.TodayMaintainRequest
|
||||
import com.za.bean.request.TodayMaintainUploadRequest
|
||||
import com.za.bean.request.TodayMaintainbean
|
||||
@ -284,4 +286,7 @@ interface ApiService {
|
||||
|
||||
@POST("driverApp/supplier/iaiCompareFace")
|
||||
fun iaiCompareFace(@Body info : DriverFaceCompareRequest) : Observable<BaseResponse<IaiCompareFaceBean>>
|
||||
|
||||
@POST("driverApp/task/getTaskNotes")
|
||||
fun getTaskNotes(@Body request : TaskNotesRequest) : Observable<BaseResponse<TaskNotesBean>>
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import com.blankj.utilcode.util.ThreadUtils
|
||||
import com.blankj.utilcode.util.ToastUtils
|
||||
import com.google.gson.JsonParseException
|
||||
import com.za.base.Const
|
||||
import com.za.base.view.NetWarnBean
|
||||
import com.za.base.view.warnBean
|
||||
import com.za.bean.BaseResponse
|
||||
import com.za.common.GlobalData
|
||||
import com.za.common.log.LogUtil
|
||||
@ -32,6 +34,11 @@ abstract class BaseObserver<T> : Observer<BaseResponse<T>> {
|
||||
override fun onNext(tBaseResponse : BaseResponse<T>) {
|
||||
if (tBaseResponse.isOk) {
|
||||
doSuccess(tBaseResponse.result)
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (warnBean.value != null && warnBean.value is NetWarnBean) {
|
||||
warnBean.value = null
|
||||
}
|
||||
}
|
||||
} else {
|
||||
when (tBaseResponse.code) {
|
||||
3, 401 -> handlerTokenExpired()
|
||||
@ -67,15 +74,18 @@ abstract class BaseObserver<T> : Observer<BaseResponse<T>> {
|
||||
|
||||
is ConnectException -> {
|
||||
doFailure(Const.NetWorkException, "与服务器断开连接")
|
||||
handlerNetError()
|
||||
}
|
||||
|
||||
is UnknownHostException -> {
|
||||
doFailure(Const.NetWorkException, "与服务器断开连接")
|
||||
handlerNetError()
|
||||
}
|
||||
|
||||
is SSLHandshakeException -> {
|
||||
doFailure(1, "证书验证失败")
|
||||
LogUtil.print("SSLHandshakeException", e)
|
||||
handlerNetError()
|
||||
}
|
||||
|
||||
is TimeoutException -> {
|
||||
@ -86,6 +96,7 @@ abstract class BaseObserver<T> : Observer<BaseResponse<T>> {
|
||||
is SocketTimeoutException -> {
|
||||
doFailure(Const.NetWorkException, "网络连接超时2")
|
||||
LogUtil.print("SocketTimeoutException2", e)
|
||||
handlerNetError()
|
||||
}
|
||||
|
||||
else -> {
|
||||
@ -102,6 +113,15 @@ abstract class BaseObserver<T> : Observer<BaseResponse<T>> {
|
||||
|
||||
abstract fun doFailure(code : Int, msg : String?)
|
||||
|
||||
private fun handlerNetError() {
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (warnBean.value == null) {
|
||||
warnBean.value = NetWarnBean("当前网络异常")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun handlerTokenExpired() {
|
||||
ThreadUtils.runOnUiThread {
|
||||
try {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.za.net
|
||||
|
||||
import android.util.Log
|
||||
import com.za.base.AppConfig
|
||||
import com.za.common.log.LogUtil
|
||||
import okhttp3.OkHttpClient
|
||||
@ -38,6 +37,11 @@ object RetrofitHelper {
|
||||
|
||||
}.setLevel(HttpLoggingInterceptor.Level.BODY)
|
||||
|
||||
fun reset() {
|
||||
apiService = null
|
||||
retrofit = null
|
||||
}
|
||||
|
||||
fun getDefaultService() : ApiService {
|
||||
return if (apiService == null) {
|
||||
apiService = getDefaultRetrofit().create(ApiService::class.java)
|
||||
|
Reference in New Issue
Block a user