package com.xiaweizi.qnews.net; import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import com.xiaweizi.qnews.BuildConfig; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; /** * 工程名: QNews * 包名: com.xiaweizi.qnews.net * 类名: QClitent * 创建者: 夏韦子 * 创建日期: 2017/2/23 * 创建时间: 19:38 */ public class QClitent { private static QClitent mQClient; private OkHttpClient.Builder mBuilder; private QClitent() { initSetting(); } public static QClitent getInstance() { if (mQClient == null) { synchronized (QClitent.class) { if (mQClient == null) { mQClient = new QClitent(); } } } return mQClient; } /** * 创建相应的服务接口 */ public <T> T create(Class<T> service, String baseUrl) { checkNotNull(service, "service is null"); checkNotNull(baseUrl, "baseUrl is null"); return new Retrofit.Builder() .baseUrl(baseUrl) .client(mBuilder.build()) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build() .create(service); } private <T> T checkNotNull(T object, String message) { if (object == null) { throw new NullPointerException(message); } return object; } private void initSetting() { //初始化OkHttp mBuilder = new OkHttpClient.Builder() .connectTimeout(9, TimeUnit.SECONDS) //设置连接超时 9s .readTimeout(10, TimeUnit.SECONDS); //设置读取超时 10s if (BuildConfig.DEBUG) { // 判断是否为debug // 如果为 debug 模式,则添加日志拦截器 HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); mBuilder.addInterceptor(interceptor); } } }