-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommonParamsInterceptor.java
More file actions
78 lines (72 loc) · 3.58 KB
/
Copy pathCommonParamsInterceptor.java
File metadata and controls
78 lines (72 loc) · 3.58 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
/**
* Add common parameters through OkHttp's Interceptor
*
* 1) Header
* 2) Query Param
* 3) POST Param form-data
* 4) POST Param x-www-form-urlencoded
*/
public abstract class CommonParamsInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request originRequest = chain.request();
Request.Builder newRequest = originRequest.newBuilder();
// Header
Headers.Builder newHeaderBuilder = originRequest.headers().newBuilder();
Map<String, String> headerMap = getHeaderMap();
if (headerMap != null && !headerMap.isEmpty()) {
for (Map.Entry<String, String> entry : headerMap.entrySet()) {
newHeaderBuilder.add(entry.getKey(), entry.getValue());
}
newRequest.headers(newHeaderBuilder.build());
}
// Query Param
if ("GET".equals(originRequest.method())) {
HttpUrl.Builder newUrlBuilder = originRequest.url().newBuilder();
Map<String, String> queryParamMap = getQueryParamMap();
if (queryParamMap != null && !queryParamMap.isEmpty()) {
for (Map.Entry<String, String> entry : queryParamMap.entrySet()) {
newUrlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
}
newRequest.url(newUrlBuilder.build());
}
} else if ("POST".equals(originRequest.method())) {
RequestBody body = originRequest.body();
if (body != null && body instanceof FormBody) {
// POST Param x-www-form-urlencoded
FormBody formBody = (FormBody) body;
Map<String, String> formBodyParamMap = new HashMap<>();
int bodySize = formBody.size();
for(int i = 0; i < bodySize; i++) {
formBodyParamMap.put(formBody.name(i), formBody.value(i));
}
Map<String, String> newFormBodyParamMap = getFormBodyParamMap();
if (newFormBodyParamMap != null) {
formBodyParamMap.putAll(newFormBodyParamMap);
FormBody.Builder bodyBuilder = new FormBody.Builder();
for (Map.Entry<String, String> entry : formBodyParamMap.entrySet()) {
bodyBuilder.add(entry.getKey(), entry.getValue());
}
newRequest.method(originRequest.method(), bodyBuilder.build());
}
} else if (body != null && body instanceof MultipartBody) {
// POST Param form-data
MultipartBody multipartBody = (MultipartBody) body;
MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
Map<String, String> extraFormBodyParamMap = getFormBodyParamMap();
for (Map.Entry<String, String> entry : extraFormBodyParamMap.entrySet()) {
builder.addFormDataPart(entry.getKey(), entry.getValue());
}
List<MultipartBody.Part> parts = multipartBody.parts();
for (MultipartBody.Part part : parts) {
builder.addPart(part);
}
newRequest.post(builder.build());
}
}
return chain.proceed(newRequest.build());
}
public abstract Map<String, String> getHeaderMap();
public abstract Map<String, String> getQueryParamMap();
public abstract Map<String, String> getFormBodyParamMap();
}