BaseRequest.java
4.05 KB
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package com.cnlive.strike.user.network.api;
import android.text.TextUtils;
import com.cnlive.core.libs.base.application.AppConfig;
import com.cnlive.core.network.BaseResult;
import com.cnlive.core.network.NetBuilder;
import com.cnlive.core.network.ServerException;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observable;
import okhttp3.Interceptor;
/**
* 基本请求
* ys
*/
public class BaseRequest {
private String userSetUrl;
private static BaseRequest request;
private long connectTimeout;//连接超时
private long readTimeout;//读取超时
private long writeTimeout;//写入超时
private List<Interceptor> interceptorList;//拦截器
private String baseUrl = "http://gank.io/api/data/";
private final String SP_CMS_URL_DEBUT = "http://cmstest.cnlive.com:8768/";
private final String SP_CMS_URL = "http://cms.cnlive.com:8768/";
//网++ 接口域名
public final String SP_BASE_URL = "https://apiwjj.cnlive.com/";
//网++ 测试环境 接口域名
public final String SP_DEBUG_URL = "http://apiwjjtest.cnlive.com/";
//OPEN API 接口域名
private final String OPEN_URL = "https://api.cnlive.com/";
/**
* 构造函数初始化
*/
public BaseRequest() {
interceptorList = new ArrayList<>();
}
/**
* 设置连接超时
*
* @param connectTimeout
* @return
*/
public BaseRequest setConnectTimeout(long connectTimeout) {
init();
connectTimeout = connectTimeout;
return request;
}
/**
* 设置读取超时
*
* @param readTimeout
* @return
*/
public BaseRequest setReadTimeout(long readTimeout) {
init();
readTimeout = readTimeout;
return request;
}
/**
* 设置写入超时
*
* @param writeTimeout
* @return
*/
public BaseRequest setWriteTimeout(long writeTimeout) {
init();
writeTimeout = writeTimeout;
return request;
}
/**
* 初始化接口地址
*/
private String initBaseUrl(Class clazz) {
if (AppConfig.isDebug()) {
baseUrl = SP_DEBUG_URL;//还原初始地址
if (clazz == ApiBaseServiceOpen.class) {
return OPEN_URL;
}
}
return baseUrl;
}
/**
* 设置连接地址
*
* @param url
* @return
*/
public BaseRequest setUrl(String url) {
init();
userSetUrl = url;
return request;
}
/**
* 添加拦截器
*
* @param interceptor
* @return
*/
public BaseRequest addInterceptor(Interceptor interceptor) {
if (null != interceptor) {
interceptorList.add(interceptor);
}
return request;
}
/**
* @return
*/
public static synchronized BaseRequest init() {
if (null == request) {
request = new BaseRequest();
}
return request;
}
public <NetService> NetService service(Class<NetService> clz) {
NetService service = null;
NetBuilder builder = new NetBuilder(clz);
if (connectTimeout > 0) {
builder.setConnectTimeout(connectTimeout);
}
if (readTimeout > 0) {
builder.setReadTimeout(readTimeout);
}
if (writeTimeout > 0) {
builder.setWriteTimeout(writeTimeout);
}
if (null != interceptorList && interceptorList.size() > 0) {
builder.addInterceptors(interceptorList);
}
//设置接口请求头地址
if (!TextUtils.isEmpty(userSetUrl)) {
builder.setBaseUrl(userSetUrl);
userSetUrl = "";
} else {
builder.setBaseUrl(initBaseUrl(clz));
}
service = (NetService) builder.getService();
builder = null;
//重置属性
resetData();
return service;
}
private void resetData() {
interceptorList.clear();
connectTimeout = 0;
readTimeout = 0;
writeTimeout = 0;
}
}