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 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() { @Override public void applyOptions(RoomDatabase.Builder builder) { //TODO 配置RoomDatabase } }) .interceptorConfigOptions(new InterceptorConfigOptions() { @Override public void applyOptions(InterceptorConfig.Builder builder) { //TODO 配置拦截器 } }); } }