/**
* 封装retrofit网络请求工具类
*/
class RetrofitManager private constructor(url: String) {
private val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(url)
.client(okHttpClient)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().serializeNulls().create()))
.build()
private val apiService: ApiService by lazy { retrofit.create(ApiService::class.java) }
companion object {
private var INSTANCE: RetrofitManager? = null
fun getInstance(url: String): RetrofitManager = INSTANCE ?: synchronized(this) {
INSTANCE ?: RetrofitManager(url)
}
private val okHttpClient: OkHttpClient = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor { msg -> msg.logi() }.setLevel(HttpLoggingInterceptor.Level.BODY))
.connectTimeout(TIME_OUT, TimeUnit.SECONDS)
.readTimeout(TIME_OUT, TimeUnit.SECONDS)
.writeTimeout(TIME_OUT, TimeUnit.SECONDS)
.build()
}
fun createApiService(isCheckConn: Boolean): ApiService? {
return if (isCheckConn) {
if (isConnected()) {
apiService
} else {
toastShort(R.string.error_network)
null
}
} else {
apiService
}
}
}
封装retrofit网络请求工具类
最新推荐文章于 2019-05-14 09:17:13 发布
本文详细介绍了一种基于Retrofit的网络请求封装方法,通过创建RetrofitManager类,实现了网络请求的统一管理和调用。该类使用OkHttp作为底层网络通信库,并集成了RxJava2和Gson库,支持响应式编程和JSON数据解析。此外,还提供了检查网络连接状态的功能,增强了网络请求的稳定性和用户体验。

462

被折叠的 条评论
为什么被折叠?



