lmw
17 小时以前 b6d14ec6c19cddb1c8caf1d024e77d250a203929
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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)
}