Skip to content

Commit 18972a1

Browse files
committed
新增支持添加动态的全局参数
1 parent 44c6ca9 commit 18972a1

File tree

10 files changed

+99
-40
lines changed

10 files changed

+99
-40
lines changed

EasyHttp.apk

342 KB
Binary file not shown.

HelpDoc.md

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
11
#### 如何添加全局参数?
22

3-
```
3+
```java
44
// 添加全局请求参数
55
EasyConfig.getInstance().addHeader("token", "abc");
66
// 添加全局请求头
77
EasyConfig.getInstance().addParam("token", "abc");
88
```
99

10-
#### 如何在请求中忽略某个全局参数?
10+
#### 如何定义全局的动态参数?
11+
12+
```java
13+
EasyConfig.getInstance().setInterceptor(new IRequestInterceptor() {
1114

15+
@Override
16+
public void intercept(String url, String tag, HttpParams params, HttpHeaders headers) {
17+
headers.put("timestamp", String.valueOf(System.currentTimeMillis()));
18+
}
19+
});
1220
```
21+
22+
#### 如何在请求中忽略某个全局参数?
23+
24+
```java
1325
public final class XxxApi implements IRequestApi {
1426

1527
@Override
@@ -24,7 +36,7 @@ public final class XxxApi implements IRequestApi {
2436

2537
#### 如何获取服务器配置?
2638

27-
```
39+
```java
2840
IRequestServer server = EasyConfig.getInstance().getServer();
2941
// 获取当前全局的服务器主机地址
3042
String host = server.getHost();
@@ -36,7 +48,7 @@ String path = server.getPath();
3648

3749
* 先定义一个服务器配置
3850

39-
```
51+
```java
4052
public class XxxServer implements IRequestServer {
4153

4254
@Override
@@ -53,13 +65,13 @@ public class XxxServer implements IRequestServer {
5365

5466
* 再将它应用到全局配置中
5567

56-
```
68+
```java
5769
EasyConfig.getInstance().setServer(new XxxServer());
5870
```
5971

6072
* 如果只是针对某个接口可以这样配置
6173

62-
```
74+
```java
6375
public final class XxxApi extends XxxServer implements IRequestApi {
6476

6577
@Override
@@ -71,7 +83,7 @@ public final class XxxApi extends XxxServer implements IRequestApi {
7183

7284
* 如果不想单独定义一个类,也可以这样写
7385

74-
```
86+
```java
7587
public final class XxxApi implements IRequestServer, IRequestApi {
7688

7789
@Override
@@ -95,7 +107,7 @@ public final class XxxApi implements IRequestServer, IRequestApi {
95107

96108
* 以表单的形式提交参数(默认)
97109

98-
```
110+
```java
99111
public class XxxServer implements IRequestServer {
100112

101113
@Override
@@ -117,7 +129,7 @@ public class XxxServer implements IRequestServer {
117129

118130
* 以 Json 的形式提交参数
119131

120-
```
132+
```java
121133
public class XxxServer implements IRequestServer {
122134

123135
@Override
@@ -148,7 +160,7 @@ public class XxxServer implements IRequestServer {
148160

149161
#### 如何忽略某个参数?
150162

151-
```
163+
```java
152164
public final class XxxApi implements IRequestApi {
153165

154166
@Override
@@ -163,7 +175,7 @@ public final class XxxApi implements IRequestApi {
163175

164176
#### 如何传入请求头?
165177

166-
```
178+
```java
167179
public final class XxxApi implements IRequestApi {
168180

169181
@Override
@@ -178,7 +190,7 @@ public final class XxxApi implements IRequestApi {
178190

179191
#### 如何重命名参数名称?
180192

181-
```
193+
```java
182194
public final class XxxApi implements IRequestApi {
183195

184196
@Override
@@ -195,7 +207,7 @@ public final class XxxApi implements IRequestApi {
195207

196208
* 使用 File 对象上传
197209

198-
```
210+
```java
199211
public final class XxxApi implements IRequestApi {
200212

201213
@Override
@@ -209,7 +221,7 @@ public final class XxxApi implements IRequestApi {
209221

210222
* 使用 InputStream 对象上传
211223

212-
```
224+
```java
213225
public final class XxxApi implements IRequestApi {
214226

215227
@Override
@@ -223,7 +235,7 @@ public final class XxxApi implements IRequestApi {
223235

224236
* 使用 RequestBody 对象上传
225237

226-
```
238+
```java
227239
public final class XxxApi implements IRequestApi {
228240

229241
@Override
@@ -237,7 +249,7 @@ public final class XxxApi implements IRequestApi {
237249

238250
#### 如何上传文件列表?
239251

240-
```
252+
```java
241253
public final class XxxApi implements IRequestApi {
242254

243255
@Override
@@ -251,12 +263,12 @@ public final class XxxApi implements IRequestApi {
251263

252264
#### 如何设置超时重试?
253265

254-
```
266+
```java
255267
EasyConfig.getInstance().setRetryCount(3);
256268
```
257269

258270
#### 如何设置不打印日志?
259271

260-
```
272+
```java
261273
EasyConfig.getInstance().setLogEnabled(false);
262274
```

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
}
1818

1919
dependencies {
20-
implementation 'com.hjq:http:8.0'
20+
implementation 'com.hjq:http:8.2'
2121
implementation 'com.squareup.okhttp3:okhttp:3.12.10'
2222
implementation 'com.google.code.gson:gson:2.8.5'
2323
}
@@ -127,8 +127,8 @@
127127
128128
EasyHttp.post(this)
129129
.api(new LoginApi()
130-
.setUserName("Android 轮子哥")
131-
.setPassword("123456"))
130+
.setUserName("Android 轮子哥")
131+
.setPassword("123456"))
132132
.request(new HttpCallback<HttpData<LoginBean>>(activity) {
133133

134134
@Override
@@ -214,14 +214,15 @@
214214

215215
| 功能 | Retrofit 框架 | EasyHttp 框架 |
216216
| :----: | :------: | :-----: |
217-
| 动态 Host | 不支持 | 支持 |
217+
| 动态 Host | 不支持 | 支持 |
218218
| 全局参数 | 不支持 | 支持 |
219+
| 动态参数 | 不支持 | 支持 |
219220
| 超时重试 | 不支持 | 支持 |
220221
| 极速下载 | 不支持 | 支持 |
221222
| 下载校验 | 不支持 | 支持 |
222223
| 注解数量 | 25 个 | 3 个 |
223224
| 上传文件 | RequestBody | File / InputStream |
224-
| 请求管理 | 需要封装 | 自动管控 |
225+
| 生命周期 | 需要封装 | 自动管控 |
225226

226227
#### 作者的其他开源项目
227228

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId "com.hjq.http.demo"
1414
minSdkVersion 14
1515
targetSdkVersion 28
16-
versionCode 80
17-
versionName "8.0"
16+
versionCode 82
17+
versionName "8.2"
1818
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1919
}
2020

app/src/main/java/com/hjq/http/demo/MyApplication.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import android.app.Application;
44

55
import com.hjq.http.EasyConfig;
6+
import com.hjq.http.config.IRequestInterceptor;
67
import com.hjq.http.config.IRequestServer;
78
import com.hjq.http.demo.http.model.RequestHandler;
89
import com.hjq.http.demo.http.server.ReleaseServer;
910
import com.hjq.http.demo.http.server.TestServer;
11+
import com.hjq.http.model.HttpHeaders;
12+
import com.hjq.http.model.HttpParams;
1013
import com.hjq.toast.ToastUtils;
1114

1215
import okhttp3.OkHttpClient;
@@ -33,6 +36,13 @@ public void onCreate() {
3336
.setServer(server)
3437
// 设置请求处理策略
3538
.setHandler(new RequestHandler(this))
39+
// 设置请求参数拦截器
40+
.setInterceptor(new IRequestInterceptor() {
41+
@Override
42+
public void intercept(String url, String tag, HttpParams params, HttpHeaders headers) {
43+
headers.put("timestamp", String.valueOf(System.currentTimeMillis()));
44+
}
45+
})
3646
// 设置请求重试次数
3747
.setRetryCount(1)
3848
// 添加全局请求参数

library/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
defaultConfig {
1414
minSdkVersion 14
1515
targetSdkVersion 26
16-
versionCode 80
17-
versionName "8.0"
16+
versionCode 82
17+
versionName "8.2"
1818
}
1919
}
2020

@@ -27,7 +27,7 @@ publish {
2727
userOrg = 'getactivity'
2828
groupId = 'com.hjq'
2929
artifactId = 'http'
30-
version = '8.0'
30+
version = '8.2'
3131
description = 'Easy-to-use network request framework'
3232
website = "https://github.com/getActivity/EasyHttp"
3333
}

library/src/main/java/com/hjq/http/EasyConfig.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.hjq.http.config.ILogStrategy;
44
import com.hjq.http.config.IRequestHandler;
5+
import com.hjq.http.config.IRequestInterceptor;
56
import com.hjq.http.config.IRequestServer;
67
import com.hjq.http.config.LogStrategy;
78
import com.hjq.http.config.RequestServer;
@@ -40,8 +41,10 @@ public static EasyConfig with(OkHttpClient client) {
4041

4142
/** 服务器配置 */
4243
private IRequestServer mServer;
43-
/** 请求拦截器 */
44+
/** 请求处理器 */
4445
private IRequestHandler mHandler;
46+
/** 请求拦截器 */
47+
private IRequestInterceptor mInterceptor;
4548
/** 日志打印策略 */
4649
private ILogStrategy mLogStrategy;
4750

@@ -83,6 +86,11 @@ public EasyConfig setHandler(IRequestHandler handler) {
8386
return this;
8487
}
8588

89+
public EasyConfig setInterceptor(IRequestInterceptor interceptor) {
90+
mInterceptor = interceptor;
91+
return this;
92+
}
93+
8694
public EasyConfig setClient(OkHttpClient client) {
8795
mClient = client;
8896
return this;
@@ -125,7 +133,7 @@ public EasyConfig setLogTag(String tag) {
125133

126134
public EasyConfig setRetryCount(int count) {
127135
if (count < 0) {
128-
// 重试次数必须大于0
136+
// 重试次数必须大于等于 0 次
129137
throw new IllegalArgumentException("The number of retries must be greater than 0");
130138
}
131139
mRetryCount = count;
@@ -134,7 +142,7 @@ public EasyConfig setRetryCount(int count) {
134142

135143
public void setRetryTime(long time) {
136144
if (time < 0) {
137-
// 重试时间必须大于0
145+
// 重试时间必须大于等于 0 毫秒
138146
throw new IllegalArgumentException("The retry time must be greater than 0");
139147
}
140148
mRetryTime = time;
@@ -148,6 +156,10 @@ public IRequestHandler getHandler() {
148156
return mHandler;
149157
}
150158

159+
public IRequestInterceptor getInterceptor() {
160+
return mInterceptor;
161+
}
162+
151163
public OkHttpClient getClient() {
152164
return mClient;
153165
}

library/src/main/java/com/hjq/http/callback/BaseCallback.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,13 @@
2424
*/
2525
public abstract class BaseCallback implements Callback {
2626

27-
/**
28-
* 请求任务对象
29-
*/
27+
/** 请求任务对象 */
3028
private CallProxy mCall;
31-
/**
32-
* 当前重试次数
33-
*/
29+
30+
/** 当前重试次数 */
3431
private int mRetryCount;
35-
/**
36-
* 生命周期管理
37-
*/
32+
33+
/** 生命周期管理 */
3834
private LifecycleOwner mLifecycleOwner;
3935

4036
BaseCallback(LifecycleOwner lifecycleOwner, CallProxy call) {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.hjq.http.config;
2+
3+
import com.hjq.http.model.HttpHeaders;
4+
import com.hjq.http.model.HttpParams;
5+
6+
/**
7+
* author : Android 轮子哥
8+
* github : https://github.com/getActivity/EasyHttp
9+
* time : 2020/08/05
10+
* desc : 请求参数拦截器
11+
*/
12+
public interface IRequestInterceptor {
13+
14+
/**
15+
* 开始请求之前调用
16+
*
17+
* @param url 请求地址
18+
* @param tag 请求标记
19+
* @param params 请求参数
20+
* @param headers 请求头参数
21+
*/
22+
void intercept(String url, String tag, HttpParams params, HttpHeaders headers);
23+
}

library/src/main/java/com/hjq/http/request/BaseRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.hjq.http.annotation.HttpRename;
1111
import com.hjq.http.config.IRequestApi;
1212
import com.hjq.http.config.IRequestHost;
13+
import com.hjq.http.config.IRequestInterceptor;
1314
import com.hjq.http.config.IRequestPath;
1415
import com.hjq.http.config.IRequestServer;
1516
import com.hjq.http.config.IRequestType;
@@ -254,6 +255,10 @@ public Call create() {
254255
}
255256

256257
String url = mRequestHost.getHost() + mRequestPath.getPath() + mRequestApi.getApi();
258+
IRequestInterceptor interceptor = EasyConfig.getInstance().getInterceptor();
259+
if (interceptor != null) {
260+
interceptor.intercept(url, mTag, params, headers);
261+
}
257262
return mClient.newCall(create(url, mTag, params, headers, type));
258263
}
259264

0 commit comments

Comments
 (0)