import android.util.Log;
import com.franmontiel.persistentcookiejar.ClearableCookieJar;
import com.franmontiel.persistentcookiejar.PersistentCookieJar;
import com.franmontiel.persistentcookiejar.cache.SetCookieCache;
import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor;
import com.ramo.www.iwms.IwmsApplication;
import com.ramo.www.iwms.NetBase.Interceptor.MyInterceptor;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* 该类未网络基础类
* 需要参数
* 为IwmsApplication类中的BASE_url
* 如未获取的到 Base_URL则网络基础对象返回null
* 调用该对象必须先判空
*/
public class NetBase {
// 线程锁下的网络接口实例
private volatile static Retrofitretrofit;
//网络通讯基础实例
private volatile static OkHttpClientokHttpClient;
// 日志标志
private final StringTAG ="NetBase";
/**
* DCL初始化网络实例
* Lazy 初始化:是
* 多线程线程安全:是
* @return 基础网络接口实例
*/
public static Retrofit getRetrofit() {
if(retrofit ==null){
synchronized (NetBase.class){
new NetBase();
return retrofit;
}
}
return retrofit;
}
/**
* 初始化网络实例
*/
public NetBase(){
try {
// 添加cookie
ClearableCookieJar cookieJar=new PersistentCookieJar(new SetCookieCache(),new SharedPrefsCookiePersistor(IwmsApplication.getContext()));
// 网络基础类添加
okHttpClient=new OkHttpClient.Builder().addInterceptor(new MyInterceptor()).cookieJar(cookieJar).build();
// 获取基础连接ip地址
String BASE_URL=IwmsApplication.BASE_URL;
Log.d("test------------","NetBase: "+BASE_URL);
// 初始化
if(BASE_URL!=null){
retrofit=new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}else {
Log.d(TAG,"NetBase: 创建网络基础失败!由于配置文件中的Host数据未读取到!");
}
}catch (Exception e){
Log.d(TAG,"NetBase: 创建网络基础失败!build中途发生异常!");
e.printStackTrace();
}
}
}
implementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1'
网友评论