use of com.ljy.devring.http.support.persistentcookiejar.persistence.SharedPrefsCookiePersistor in project DevRing by LJYcoder.
the class RingModule method okHttpClient.
// @Singleton
@Provides
OkHttpClient okHttpClient(Application application, OkHttpClient.Builder builder, HttpConfig httpConfig, HttpLoggingInterceptor loggingInterceptor, HttpCacheInterceptor cacheInterceptor, HttpHeaderInterceptor headerInterceptor, HttpProgressInterceptor progressInterceptor) {
if (httpConfig.getConnectTimeout() > 0) {
builder.connectTimeout(httpConfig.getConnectTimeout(), TimeUnit.SECONDS);
}
if (httpConfig.getReadTimeout() > 0) {
builder.readTimeout(httpConfig.getReadTimeout(), TimeUnit.SECONDS);
}
if (httpConfig.isUseLog() && !builder.interceptors().contains(loggingInterceptor)) {
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.addInterceptor(loggingInterceptor);
}
if (httpConfig.isUseCache() && !builder.interceptors().contains(cacheInterceptor)) {
// 缓存目录
File cacheFile;
if (httpConfig.getCacheFolder() != null && httpConfig.getCacheFolder().isDirectory()) {
cacheFile = httpConfig.getCacheFolder();
} else {
cacheFile = FileUtil.getDirectory(FileUtil.getExternalCacheDir(application), "retrofit_http_cache");
}
// 大小默认20Mb
Cache cache = new Cache(cacheFile, httpConfig.getCacheSize() > 0 ? httpConfig.getCacheSize() : 1024 * 1024 * 20);
builder.addInterceptor(cacheInterceptor);
builder.addNetworkInterceptor(cacheInterceptor);
builder.cache(cache);
}
if (httpConfig.isUseCookie()) {
if (httpConfig.isCookiePersistent()) {
ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(application));
builder.cookieJar(cookieJar);
} else {
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
builder.cookieJar(new JavaNetCookieJar(cookieManager));
}
}
headerInterceptor.setMapHeader(httpConfig.getMapHeader());
if (!builder.interceptors().contains(headerInterceptor)) {
builder.addInterceptor(headerInterceptor);
}
if (!builder.interceptors().contains(progressInterceptor)) {
builder.addNetworkInterceptor(progressInterceptor);
}
// 配置SSL
if (httpConfig.getSslSocketFactory() != null && httpConfig.getTrustManager() != null) {
builder = builder.build().newBuilder().sslSocketFactory(httpConfig.getSslSocketFactory(), httpConfig.getTrustManager());
}
return builder.build();
}
Aggregations