package com.share.mvpsdk.helper; import com.share.mvpsdk.helper.okhttp.CacheInterceptor; import com.share.mvpsdk.utils.StringUtils; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * Created by Horrarndoo on 2017/9/7. *

*/ public class RetrofitCreateHelper { private static final int TIMEOUT_READ = 20; private static final int TIMEOUT_CONNECTION = 10; private static String Authorization="",token=""; private static RetrofitCreateHelper retrofitCreateHelper=null; private static final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor() .setLevel(HttpLoggingInterceptor.Level.BODY); private static CacheInterceptor cacheInterceptor = new CacheInterceptor(); private static OkHttpClient.Builder okhttpClientBuilder=null; /*private static OkHttpClient okHttpClient = new OkHttpClient.Builder() //SSL证书 .sslSocketFactory(TrustManager.getUnsafeOkHttpClient()) .hostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) //打印日志 .addInterceptor(interceptor) //设置Cache拦截器 .addNetworkInterceptor(cacheInterceptor) .addInterceptor(cacheInterceptor) .cache(HttpCache.getCache()) //time out .connectTimeout(TIMEOUT_CONNECTION, TimeUnit.SECONDS) .readTimeout(TIMEOUT_READ, TimeUnit.SECONDS) .writeTimeout(TIMEOUT_READ, TimeUnit.SECONDS) //失败重连 .retryOnConnectionFailure(true) .build();*/ public static RetrofitCreateHelper getInstance(){ if (null==retrofitCreateHelper){ synchronized (RetrofitCreateHelper.class){ if (null==retrofitCreateHelper)retrofitCreateHelper=new RetrofitCreateHelper(); } } return retrofitCreateHelper; } public RetrofitCreateHelper(){ if (null==okhttpClientBuilder)okhttpClientBuilder=new OkHttpClient.Builder(); okhttpClientBuilder.connectTimeout(10000,TimeUnit.SECONDS); okhttpClientBuilder.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); Request.Builder requestBuilder = original.newBuilder().header("Authorization", Authorization); Request request = requestBuilder.build(); return chain.proceed(request); } }); okhttpClientBuilder.addNetworkInterceptor(cacheInterceptor); okhttpClientBuilder.addInterceptor(interceptor); } public T createApi(Class clazz, String url) { Authorization=token; Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .client(okhttpClientBuilder.build()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); return retrofit.create(clazz); } // public static T loginApi(Class clazz, String url) { // Authorization= StringUtils.getSign(); // okHttpClient.newBuilder().addInterceptor(new Interceptor() { // @Override // public Response intercept(Chain chain) throws IOException { // Request original = chain.request(); // Request.Builder requestBuilder = original.newBuilder().header("Authorization", Authorization); // Request request = requestBuilder.build(); // return chain.proceed(request); // } // }); // Log.d("77777","Authorization="+Authorization); // Retrofit retrofit = new Retrofit.Builder() // .baseUrl(url) // .client(okHttpClient) // .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // .addConverterFactory(GsonConverterFactory.create()) // .build(); // return retrofit.create(clazz); // } public void setAuthorization(String Authorization){ this.token=Authorization; } public T login(Class clazz,String url){ Authorization= StringUtils.getSign(); Retrofit retrofit=new Retrofit.Builder() .client(okhttpClientBuilder.build()) .baseUrl(url) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); return retrofit.create(clazz); } }