11package com .threetree .tthttp ;
22
3+ import android .text .TextUtils ;
4+
35import java .util .concurrent .TimeUnit ;
46
57import okhttp3 .Interceptor ;
68import okhttp3 .OkHttpClient ;
9+ import retrofit2 .Converter ;
710import retrofit2 .Retrofit ;
811import retrofit2 .adapter .rxjava2 .RxJava2CallAdapterFactory ;
912import retrofit2 .converter .gson .GsonConverterFactory ;
1215 * Created by Administrator on 2018/7/12.
1316 */
1417
15- public class RetrofitManager {
18+ public class RetrofitManager < T > {
1619 private static RetrofitManager mRetrofitManager ;
1720 private String mBaseUrl ;
1821 private Retrofit mRetrofit ;
1922 private OkHttpClient .Builder mClientBuilder ;
23+ private Retrofit .Builder mRetrofitBuilder ;
24+ private T mService ;
25+ private Class <T > mServiceClass ;
26+ private long mConnectTimeout ;
27+ private long mReadTimeout ;
28+ private long mWriteTimeout ;
29+ private boolean isReConnect ;
2030
2131 private RetrofitManager ()
2232 {
2333 mClientBuilder = new OkHttpClient .Builder ();
34+ mRetrofitBuilder = new Retrofit .Builder ();
35+ mRetrofitBuilder .addCallAdapterFactory (RxJava2CallAdapterFactory .create ());
36+ mRetrofitBuilder .addConverterFactory (GsonConverterFactory .create ());
37+
38+ mConnectTimeout = 15 ;
39+ mReadTimeout = 20 ;
40+ mWriteTimeout =20 ;
41+ isReConnect = true ;
2442 }
2543
2644 public static RetrofitManager getInstence ()
@@ -43,30 +61,76 @@ public RetrofitManager addInterceptor(Interceptor interceptor)
4361
4462 public RetrofitManager baseUrl (String baseUrl )
4563 {
64+ if (TextUtils .isEmpty (baseUrl ))
65+ throw new NullPointerException ("baseUrl must not be null" );
66+ mRetrofitBuilder .baseUrl (baseUrl );
4667 mBaseUrl = baseUrl ;
4768 return this ;
4869 }
4970
71+ public RetrofitManager serviceClass (Class <T > serviceClass )
72+ {
73+ if (serviceClass == null )
74+ throw new NullPointerException ("serviceClass must not be null" );
75+ mServiceClass = serviceClass ;
76+ return this ;
77+ }
78+
79+ public RetrofitManager addConverterFactory (Converter .Factory factory )
80+ {
81+ mRetrofitBuilder .addConverterFactory (factory );
82+ return this ;
83+ }
84+
85+ public RetrofitManager connectTimeout (long connectTimeout )
86+ {
87+ mConnectTimeout = connectTimeout ;
88+ return this ;
89+ }
90+
91+ public RetrofitManager readTimeout (long readTimeout )
92+ {
93+ mReadTimeout = readTimeout ;
94+ return this ;
95+ }
96+
97+ public RetrofitManager writeTimeout (long writeTimeout )
98+ {
99+ mWriteTimeout = writeTimeout ;
100+ return this ;
101+ }
102+
103+ public RetrofitManager retryOnConnectionFailure (boolean reConnect )
104+ {
105+ isReConnect = reConnect ;
106+ return this ;
107+ }
108+
50109 public void create ()
51110 {
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 ();
111+ if (TextUtils .isEmpty (mBaseUrl ))
112+ throw new NullPointerException ("baseUrl must not be null" );
113+ if (mServiceClass == null )
114+ throw new NullPointerException ("service must not be null" );
115+
116+ mClientBuilder .connectTimeout (mConnectTimeout , TimeUnit .SECONDS );//超时
117+ mClientBuilder .readTimeout (mReadTimeout , TimeUnit .SECONDS );
118+ mClientBuilder .writeTimeout (mWriteTimeout , TimeUnit .SECONDS );
119+ mClientBuilder .retryOnConnectionFailure (isReConnect );//重连
120+
121+ mRetrofitBuilder .client (mClientBuilder .build ());
122+ mRetrofit = mRetrofitBuilder .build ();
123+ mService = mRetrofit .create (mServiceClass );
64124 }
65125
66- public < T > T getRetrofitService (Class < T > service )
126+ public T getRetrofitService ()
67127 {
68128 if (mRetrofit == null )
69129 throw new RuntimeException ("retrofit must be init" );
70- return mRetrofit .create (service );
130+ if (mServiceClass == null )
131+ throw new NullPointerException ("service must not be null" );
132+ if (mService == null )
133+ mService = mRetrofit .create (mServiceClass );
134+ return mService ;
71135 }
72136}
0 commit comments