lmw
2023-06-13 adf8013576cbdd12e5ebea8ff7e32baf5d558b27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.kuanzhai.user.network
 
import android.util.Log
import cn.sinata.xldutils.utils.SPUtils
import com.kuanzhai.user.utils.Const
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
 
/**
 * 网络请求retrofit初始化。
 */
class RRetrofit private constructor() {
 
    private val retrofit: Retrofit = Retrofit.Builder()
            .baseUrl(Apis.BASE_URL)
            .addConverterFactory(JsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .client(OkHttpClient.Builder()
                    .addInterceptor(HttpLoggingInterceptor().apply {
                        level = HttpLoggingInterceptor.Level.BODY
                    })
                .addInterceptor { chain ->
                    val token = SPUtils.instance().getString(Const.User.TOKEN)
                    val request =
                        if (token.isEmpty()) chain.request() else
                            chain.request().newBuilder().addHeader("Authorization", "Bearer $token").build()
                    Log.e(Const.Tag,request.headers().toString())
                    chain.proceed(request)
                }
                .build())
            .build()
 
    companion object {
        fun instance() = RRetrofit()
    }
 
    fun <T> create(clazz: Class<T>): T = retrofit.create(clazz)
}