11package com .threetree .tthttp ;
22
3- import java .util .List ;
43import java .util .concurrent .TimeUnit ;
54
65import okhttp3 .Interceptor ;
1514
1615public class RetrofitManager {
1716 private static RetrofitManager mRetrofitManager ;
17+ private String mBaseUrl ;
18+ private Retrofit mRetrofit ;
19+ private OkHttpClient .Builder mClientBuilder ;
20+
21+ private RetrofitManager ()
22+ {
23+ mClientBuilder = new OkHttpClient .Builder ();
24+ }
1825
1926 public static RetrofitManager getInstence ()
2027 {
@@ -28,67 +35,38 @@ public static RetrofitManager getInstence()
2835 return mRetrofitManager ;
2936 }
3037
31- private OkHttpClient getHttpClient ( List < Interceptor > interceptors )
38+ public RetrofitManager addInterceptor ( Interceptor interceptor )
3239 {
33- OkHttpClient .Builder builder = new OkHttpClient .Builder ();
34- builder .connectTimeout (15 , TimeUnit .SECONDS );//超时
35- if (interceptors != null && interceptors .size () > 0 )
36- {
37- for (Interceptor interceptor :interceptors )
38- {
39- builder .addInterceptor (interceptor );
40- }
41- }
42- return builder .build ();
40+ mClientBuilder .addInterceptor (interceptor );
41+ return this ;
4342 }
4443
45- private OkHttpClient getHttpClient ( Interceptor interceptor )
44+ public RetrofitManager baseUrl ( String baseUrl )
4645 {
47- OkHttpClient .Builder builder = new OkHttpClient .Builder ();
48- builder .connectTimeout (15 , TimeUnit .SECONDS );//超时
49- if (interceptor != null )
50- {
51- builder .addInterceptor (interceptor );
52- }
53- return builder .build ();
46+ mBaseUrl = baseUrl ;
47+ return this ;
5448 }
5549
56-
57- public <T > T getRetrofitService (String baseUrl , List <Interceptor > interceptors , Class <T > service )
50+ public void create ()
5851 {
59- Retrofit retrofit = new Retrofit .Builder ().baseUrl (baseUrl )
60- //将client与retrofit关联
61- .client (getHttpClient (interceptors ))
62- .addCallAdapterFactory (RxJava2CallAdapterFactory .create ())
63- .addConverterFactory (GsonConverterFactory .create ())
64- .build ();
65- //到这一步创建完成
66- T retrofitService = null ;
67- try {
68- Class <T > className = (Class <T >) Class .forName (service .getName ());
69- retrofitService = retrofit .create (className );
70- } catch (Exception e ) {
71- e .printStackTrace ();
72- }
73- return retrofitService ;
52+ Retrofit .Builder builder = new Retrofit .Builder ();
53+ builder .baseUrl (mBaseUrl );
54+ builder .addCallAdapterFactory (RxJava2CallAdapterFactory .create ());
55+ builder .addConverterFactory (GsonConverterFactory .create ());
56+
57+ mClientBuilder .connectTimeout (15 , TimeUnit .SECONDS );//超时
58+ mClientBuilder .readTimeout (20 , TimeUnit .SECONDS );
59+ mClientBuilder .writeTimeout (20 , TimeUnit .SECONDS );
60+ mClientBuilder .retryOnConnectionFailure (true );//重连
61+
62+ builder .client (mClientBuilder .build ());
63+ mRetrofit = builder .build ();
7464 }
7565
76- public <T > T getRetrofitService (String baseUrl , Interceptor interceptor , Class <T > service )
66+ public <T > T getRetrofitService (Class <T > service )
7767 {
78- Retrofit retrofit = new Retrofit .Builder ().baseUrl (baseUrl )
79- //将client与retrofit关联
80- .client (getHttpClient (interceptor ))
81- .addCallAdapterFactory (RxJava2CallAdapterFactory .create ())
82- .addConverterFactory (GsonConverterFactory .create ())
83- .build ();
84- //到这一步创建完成
85- T retrofitService = null ;
86- try {
87- Class <T > className = (Class <T >) Class .forName (service .getName ());
88- retrofitService = retrofit .create (className );
89- } catch (Exception e ) {
90- e .printStackTrace ();
91- }
92- return retrofitService ;
68+ if (mRetrofit == null )
69+ throw new RuntimeException ("retrofit must be init" );
70+ return mRetrofit .create (service );
9371 }
9472}
0 commit comments