RetrofitCreateHelper.java
4.89 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
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.
* <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);
}
}