package com.dollearn.student.network
|
|
import android.util.Log
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.google.gson.Gson
|
import com.dollearn.student.utils.Const
|
import okhttp3.FormBody
|
import okhttp3.Headers
|
import okhttp3.OkHttpClient
|
import okhttp3.logging.HttpLoggingInterceptor
|
import org.json.JSONObject
|
import retrofit2.Retrofit
|
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
import java.nio.charset.StandardCharsets
|
|
/**
|
* 网络请求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()
|
chain.proceed(request)
|
}
|
// .addInterceptor { chain ->
|
// var request = chain.request()
|
// //是否不是本app的接口
|
// var notapp = false
|
// val headers: Headers = request.headers()
|
// val names = headers.names()
|
// if (names.contains("notapp")) {
|
// notapp = true
|
// }
|
//
|
// if (notapp||request.method() == "GET") {
|
// chain.proceed(chain.request())
|
// } else {
|
// val bodyBuilder = FormBody.Builder()
|
// var formBody: FormBody
|
// val map = HashMap<String, Any>()
|
// if (request.body() is FormBody) {
|
// formBody = request.body() as FormBody
|
// (0 until formBody.size()).forEach {
|
// bodyBuilder.addEncoded(
|
// formBody.encodedName(it),
|
// formBody.encodedValue(it)
|
// )
|
// map[formBody.name(it)] = formBody.value(it)
|
// }
|
// }
|
// formBody = bodyBuilder.addEncoded("sign", SignUtil.getSign(map) ?: "").build()
|
// request = request.newBuilder().post(formBody).build()
|
// chain.proceed(request)
|
// }
|
//
|
// }
|
.build())
|
.build()
|
|
companion object {
|
fun instance() = RRetrofit()
|
}
|
|
fun <T> create(clazz: Class<T>): T = retrofit.create(clazz)
|
}
|