Repository navigation
Expand file tree
/
Copy pathHttpUtils.java
More file actions
107 lines (90 loc) · 2.41 KB
/
Copy pathHttpUtils.java
File metadata and controls
107 lines (90 loc) · 2.41 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
package com.ejlchina.okhttps;
import com.ejlchina.okhttps.internal.AsyncHttpTask;
import com.ejlchina.okhttps.internal.SyncHttpTask;
import com.ejlchina.okhttps.internal.TaskExecutor;
import okhttp3.Call;
import okhttp3.Request;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
/**
* Http 工具类,封装 OkHttp
* 特性:
* 同步请求
* 异步请求
* Restfull路径
* 文件上传
* JSON自动解析
* TCP连接池
* Http2
*
* @author Troy.Zhou
*/
public class HttpUtils {
private static HTTP http;
/**
* 配置HttpUtils持有的HTTP实例(不调用此方法前默认使用一个没有没有经过任何配置的HTTP懒实例)
* @param http HTTP实例
*/
public static void of(HTTP http) {
if (http != null) {
HttpUtils.http = http;
} else {
throw new IllegalArgumentException("Parameter http can not be null!");
}
}
static synchronized HTTP getHttp() {
if (http != null) {
return http;
}
http = HTTP.builder().build();
return http;
}
/**
* 异步请求
* @param url 请求地址
* @return 异步 HttpTask
*/
public static AsyncHttpTask async(String url) {
return getHttp().async(url);
}
/**
* 同步请求
* @param url 请求地址
* @return 同步 HttpTask
*/
public static SyncHttpTask sync(String url) {
return getHttp().sync(url);
}
/**
* 根据标签取消HTTP任务,只要任务的标签包含指定的Tag就会被取消
* @param tag 标签
* @return 被取消的任务数量
*/
public static int cancel(String tag) {
return getHttp().cancel(tag);
}
/**
* OkHttp 原生请求 (该请求不经过 预处理器)
* @param request 请求
* @return Call
*/
public static Call request(Request request) {
return getHttp().request(request);
}
/**
* Websocket(该请求不经过 预处理器)
* @param request 请求
* @param listener 监听器
* @return
*/
public static WebSocket webSocket(Request request, WebSocketListener listener) {
return getHttp().webSocket(request, listener);
}
/**
* 获取任务执行器
* @return TaskExecutor
*/
public static TaskExecutor getExecutor() {
return getHttp().getExecutor();
}
}