| 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 配置拦截器 | 
|   | 
|                     } | 
|                 }); | 
|     } | 
| } |