doum
6 天以前 2b287056e2f59518888d05a1bbc7e5a55fbd84d5
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.doumee.keyCabinet.http;
 
import android.content.Context;
 
import androidx.room.RoomDatabase;
 
import com.doumee.lib_coremodel.config.FrameConfigModule;
import com.doumee.lib_coremodel.di.module.ConfigModule;
import com.doumee.lib_coremodel.http.InterceptorConfig;
import com.doumee.lib_coremodel.http.interceptor.BaseInterceptor;
import com.doumee.lib_coremodel.http.interceptor.logging.LoggingInterceptor;
import com.doumee.lib_coremodel.http.utils.HttpsUtils;
import com.doumee.keyCabinet.BuildConfig;
import com.doumee.lib_coremodel.util.SpUtil;
import com.google.gson.GsonBuilder;
 
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
 
import okhttp3.OkHttpClient;
import okhttp3.internal.platform.Platform;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
 
import static com.doumee.lib_coremodel.http.interceptor.logging.Level.BASIC;
 
public class AppConfigModule extends FrameConfigModule {
    //超时时间
    private static final int DEFAULT_TIMEOUT = 20;
    //缓存时间
    private static final int CACHE_TIMEOUT = 10 * 1024 * 1024;
 
    @Override
    public void applyOptions(Context context, ConfigModule.Builder builder) {
        //请求头参数
        Map<String, String> headers=new HashMap<>();
        //https单向认证
        HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory();
 
        builder.baseUrl(SpUtil.getString("base_url",Apis.HTTP));
        //builder.baseUrl("http://apis.juhe.cn");
        builder.retrofitOptions(new RetrofitOptions() {
                    @Override
                    public void applyOptions(Retrofit.Builder builder) {
                        builder.addConverterFactory(GsonConverterFactory.create())
                                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                                .build();
                    }
                })
                .okHttpClientOptions(new OkHttpClientOptions() {
                    @Override
                    public void applyOptions(OkHttpClient.Builder builder) {
                        //.cookieJar(new CookieJarImpl(new PersistentCookieStore(context)))
                                //.cache(cache)
                        builder.addInterceptor(new BaseInterceptor(headers))
                                //.addInterceptor(new CacheInterceptor(context))
                                //.sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)
                                .addInterceptor(new LoggingInterceptor
                                        .Builder()//构建者模式
                                        .loggable(BuildConfig.DEBUG) //是否开启日志打印
                                        .setLevel(BASIC) //打印的等级
                                        .log(Platform.INFO) // 打印类型
                                        .request("HTTP==> Request") // request的Tag
                                        .response("HTTP==> Response")// Response的Tag
                                        //.addHeader("log-header", "I am the log request header.") // 添加打印头, 注意 key 和 value 都不能是中文
                                        .build()
                                )
                                .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
                                .writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
                                //.connectionPool(new ConnectionPool(8, 15, TimeUnit.SECONDS))
                                // 这里你可以根据自己的机型设置同时连接的个数和时间,我这里8个,和每个保持时间为10s
                                .build();
                    }
                })
                .gsonOptions(new GsonOptions() {
                    @Override
                    public void applyOptions(GsonBuilder builder) {
                        //TODO 配置Gson
                    }
                })
                .roomDatabaseOptions(new RoomDatabaseOptions<RoomDatabase>() {
                    @Override
                    public void applyOptions(RoomDatabase.Builder<RoomDatabase> builder) {
                        //TODO 配置RoomDatabase
                    }
                })
                .interceptorConfigOptions(new InterceptorConfigOptions() {
                    @Override
                    public void applyOptions(InterceptorConfig.Builder builder) {
                        //TODO 配置拦截器
 
                    }
                });
    }
}