依赖:
// Retrofit库
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
//rxjava
implementation 'io.reactivex.rxjava2:rxjava:2.0.1'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
//日志拦截器
implementation 'com.orhanobut:logger:2.2.0'
//okhttpclient依赖
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okio:okio:1.12.0'
//日志拦截器
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'
OkhttpManager:
public class OkhttpManager {
private static OkhttpManager okhttpManager;
private static OkHttpClient mOkHttpClient;
private OkhttpManager() {
mOkHttpClient = new OkHttpClient.Builder()
.writeTimeout(50, TimeUnit.SECONDS)
.readTimeout(50, TimeUnit.SECONDS)
.connectTimeout(50, TimeUnit.SECONDS)
.addInterceptor(new HanderInterceptor())
.addInterceptor(new HttpLoggingInterceptor(new MyLogger()).setLevel(HttpLoggingInterceptor.Level.BODY))
.build();
}
public static OkhttpManager getInstance() {
if (okhttpManager == null) {
synchronized (OkhttpManager.class) {
if (okhttpManager == null) {
okhttpManager = new OkhttpManager();
}
}
}
return okhttpManager;
}
public OkHttpClient getmOkHttpClient() {
return mOkHttpClient;
}}
HanderInterceptor:
public class HanderInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
builder.addHeader("userId", "");
builder.addHeader("sessionId", "");
Request request1 = builder.build();
return chain.proceed(request1); }}
MyLogger 拦截器 :
public class MyLogger implements HttpLoggingInterceptor.Logger {
@Override
public void log(String message) {
if (!TextUtils.isEmpty(message)) {
if (message.startsWith("{") || message.startsWith("[")) {
Logutil.json(message);
} else {
Logutil.v(message);
}
} }}
RetrofitManager:
public class RetrofitManager {
private static RetrofitManager mInstance;
private final Retrofit mretrofit;
private RetrofitManager() {
mretrofit = new Retrofit.Builder()
.baseUrl(Api.Url)
//和 ok建立 联系
.client(OkhttpManager.getInstance().getmOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())//gson
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())//call
.build(); }
public static RetrofitManager getmInstance() {
if (mInstance == null) {
synchronized (RetrofitManager.class) {
if (mInstance == null) {
mInstance = new RetrofitManager();
}
}
}
return mInstance;
}
// 泛型 动态代理机制
public <T> T createService1(final Class<T> service) {
T t = mretrofit.create(service);
return t;
}}