RetrofitCreateHelper.java
5.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.share.mvpsdk.helper;
import android.util.Log;
import com.share.mvpsdk.helper.okhttp.CacheInterceptor;
import com.share.mvpsdk.helper.okhttp.HttpCache;
import com.share.mvpsdk.helper.okhttp.TrustManager;
import com.share.mvpsdk.utils.StringUtils;
import com.share.mvpsdk.utils.ToastUtils;
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.
* <p>
*/
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> T createApi(Class<T> 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> T loginApi(Class<T> 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> T login(Class<T> 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);
}
}