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