Hunter0x7c7
2023-09-08 c64f00a1f9a91cb82bd1b8308e0c9b29ef5de76f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.github.hunter0x7c7.sync.model.server;
 
 
import com.github.hunter0x7c7.sync.model.server.net.interceptors.HeaderInterceptors;
import com.github.hunter0x7c7.sync.model.server.net.interceptors.RestInterceptors;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
 
import java.util.concurrent.TimeUnit;
 
/**
 * ================================================================
 * <p>
 * 版    权: Hunter(c)2020
 * <p>
 * 作    者: Hunter
 * <p>
 * 版    本: V1.0
 * <p>
 * 创建日期: 2020/7/22 9:25
 * <p>
 * 描    述:服务器连接客户端
 * <p>
 * <p>
 * 修订历史:
 * <p>
 * ================================================================
 */
public class ServiceClient extends BaseServiceClient {
 
    private static ServiceClient sServiceClient;
 
    private ServiceClient() {
    }
 
    /**
     * 获取实例
     */
    public static ServiceClient getInstance() {
        if (sServiceClient == null) {
            synchronized (ServiceClient.class) {
                if (sServiceClient == null) {
                    sServiceClient = new ServiceClient();
                }
            }
        }
        return sServiceClient;
    }
 
    /**
     * 获取BaseUrl
     */
    public String getBaseUrl() {
        return "https://www.baidu.com/";
    }
 
    /**
     * 供应服务器接口
     */
    public ServiceApi provideServiceApi() {
        return provideServiceApi(getBaseUrl(), provideOkHttpClient());
    }
 
    /**
     * 供应服务器接口
     */
    private ServiceApi provideServiceApi(String baseUrl, OkHttpClient okHttpClient) {
        Retrofit retrofit = getRetrofit(baseUrl, okHttpClient);
        return createServiceFrom(retrofit, ServiceApi.class);
    }
 
//    @Override
//    protected Retrofit getRetrofit(String baseUrl, OkHttpClient okHttpClient) {
//        return new Retrofit.Builder()
//                .addConverterFactory(new NullOnEmptyConverterFactory())
//                .addConverterFactory(GsonConverterFactory.create(new GsonBuilder().setLenient().create()))
//                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//                .baseUrl(baseUrl)
//                .client(okHttpClient)
//                .build();
//    }
 
    /**
     * 供应OkHttp客户端
     */
    protected OkHttpClient provideOkHttpClient() {
        return getUnsafeOkHttpClientInstance().newBuilder()
                .addInterceptor((new HttpLoggingInterceptor()).setLevel(getLevel()))
                .addNetworkInterceptor(new HeaderInterceptors())
                .addNetworkInterceptor(new RestInterceptors())
                .connectTimeout(20, TimeUnit.SECONDS)//链接超时
                .readTimeout(20, TimeUnit.SECONDS)//设置读取超时
//                .retryOnConnectionFailure(true)
//                .proxy(Proxy.NO_PROXY)
//                .sslSocketFactory(ssl, trustManager)
                .build();
    }
 
}