package com.dayu.pipirrapp.net;
|
|
|
import com.dayu.pipirrapp.BuildConfig;
|
|
import java.util.concurrent.TimeUnit;
|
|
import okhttp3.OkHttpClient;
|
import okhttp3.logging.HttpLoggingInterceptor;
|
import retrofit2.Retrofit;
|
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
|
/**
|
* Copyright (C), 2023,
|
* Author: zuo
|
* Description:通信模块主类
|
*/
|
public class RetrofitClient {
|
|
private static RetrofitClient mInstance;
|
private final Retrofit retrofit;
|
private static final int READ_TIME_OUT = 5;
|
private static final int CONNECT_TIME_OUT = 5;
|
|
private RetrofitClient() {
|
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
|
// 包含header、body数据
|
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
|
// loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
|
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
|
//设置连接和读取时间
|
builder.readTimeout(READ_TIME_OUT, TimeUnit.MINUTES);
|
builder.connectTimeout(CONNECT_TIME_OUT, TimeUnit.MINUTES);
|
builder.writeTimeout(CONNECT_TIME_OUT, TimeUnit.MINUTES);
|
//添加统一的header
|
builder.addInterceptor(new MyIntercepterApplication());
|
//添加日志拦截器
|
//添加数据请求统一处理拦截器
|
// if (BuildConfig.DEBUG) {
|
// builder.addInterceptor(loggingInterceptor);
|
// }
|
|
OkHttpClient client = builder.build();
|
// // 创建GsonBuilder并设置长整型序列化策略为字符串
|
// GsonBuilder gsonBuilder = new GsonBuilder();
|
// gsonBuilder.registerTypeAdapter(String.class, new LongTypeAdapter());
|
// gsonBuilder.registerTypeAdapter(long.class, new LongTypeAdapter()); // 如果是 long 类型的基本数据类型,也需要注册
|
// gsonBuilder.setLongSerializationPolicy(LongSerializationPolicy.STRING);
|
//// 创建Gson实例
|
// Gson gson = gsonBuilder.create();
|
retrofit = new Retrofit.Builder()
|
.baseUrl(Constants.BASE_URL)
|
.addConverterFactory(GsonConverterFactory.create())
|
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
|
.client(client).build();
|
}
|
|
public static synchronized RetrofitClient getInstance() {
|
if (mInstance == null) {
|
mInstance = new RetrofitClient();
|
}
|
return mInstance;
|
}
|
|
public ApiService getApiService() {
|
return retrofit.create(ApiService.class);
|
}
|
|
|
}
|