package com.dayu.pipirrapp.net; 
 | 
  
 | 
  
 | 
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); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |