public class RetrofitManger {
/**
* 保存一个retrofit的实例,通过(baseUrl来获取)
*/
private HashMapmRetrofitHashMap =new HashMap<>();
private static final int DEFAULT_MILLISECONDS =10;//默认的超时时间
/**
* 内部类单例设计模式
*/
private RetrofitManger() {
}
private static class RetrofitMangerInstance {
private final static RetrofitMangerRETROFIT_MANGER =new RetrofitManger();
}
public static RetrofitManger getInstance() {
return RetrofitMangerInstance.RETROFIT_MANGER;
}
private Retrofit getRetrofit(String baseUrl) {
Retrofit retrofit;
if (mRetrofitHashMap.containsKey(baseUrl)) {
retrofit =mRetrofitHashMap.get(baseUrl);
}else {
retrofit = createRetrofit(baseUrl);
mRetrofitHashMap.put(baseUrl,retrofit);
}
return retrofit;
}
/**
* @Params :创建Retrofit
* @Author :zhaohuiming
* @Date :2019/12/10
*/
private Retrofit createRetrofit(String baseUrl) {
OkHttpClient httpClient =new OkHttpClient().newBuilder()
.readTimeout(DEFAULT_MILLISECONDS, TimeUnit.SECONDS)//设置读取超时时间
.connectTimeout(DEFAULT_MILLISECONDS, TimeUnit.SECONDS)//设置请求超时时间
.writeTimeout(DEFAULT_MILLISECONDS, TimeUnit.SECONDS)//设置写入超时时间
//.addInterceptor(new HeadersInterceptor())//添加公共头信息
//.addInterceptor(new LogInterceptor())//添加打印拦截器
.retryOnConnectionFailure(false)//设置出现错误进行重新连接。
.build();
return new Retrofit.Builder()
.client(httpClient)
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
/**
* 根据各业务接口 获取不同的retrofit service接口对象
*/
public T getRetrofitService(Class tClass) {
return getRetrofit(BaseApi.getBaseUrl()).create(tClass);
}
}