开发环境

基于 JAVA-8HttpClient-4.5.2 开发源码地址见 HttpUtils.java

发送 Http 请求

工具类提供了常用的 GETPOSTPUTDELETE 方法请求

1
2
3
4
5
6
7
8
// GET 请求
HttpUtils.get("http://www.duitang.com")...
// PUT 请求
HttpUtils.put("http://www.duitang.com")...
// POST 请求
HttpUtils.post("http://www.duitang.com")...
// DELETE 请求
HttpUtils.delete("http://www.duitang.com")...

可选配置项

以下 set 方法都是可选的配置项下面设定的都是它们的原始默认数值

1
2
3
4
5
6
7
8
9
10
11
// GET 请求
HttpUtils.get("http://www.duitang.com")
// 设置连接超时时间
.setConnectTimeoutSecond(60)
// 设置读取超时时间
.setReadTimeoutSecond(120)
// 设置失败重试次数
.setRetryTimes(3)
// 设置读取结果使用的字符集编码
.setReadResultCharset("UTF-8")
...

设置代理

通过 setProxy(host, port, schema) 可设置代理schema 的可选值为 http 或 https默认为 http若为 HTTP 的代理可直接通过调用 setProxy(host, port) 来设置代理

1
2
3
4
5
// GET 请求
HttpUtils.get("http://www.duitang.com")
// 设置代理
.setProxy("122.96.59.106", 80, "http")
...

设置请求参数

通过 addParam(String, Object) 可设置请求的参数

1
2
3
4
5
// GET 请求
HttpUtils.get("http://www.duitang.com/search/")
// 请求参数
.addParam("type", "feed").addParam("kw", "插画")
...

或者通过 setParams(Object…) 来设置请求的参数

1
2
3
4
5
// GET 请求
HttpUtils.get("http://www.duitang.com/search/")
// 请求参数
.setParams("type", "feed", "kw", "插画")
...

或者通过 setParams(Map) 来设置请求的参数

1
2
3
4
5
6
7
8
9
Map<String, Object> params = new HashMap<>();
params.put("type", "feed");
params.put("kw", "插画");
// GET 请求
HttpUtils.get("http://www.duitang.com/search/")
// 请求参数
.setParams(params)
....

JSON 参数的请求可以通过 setBody(String) 来设置

1
2
3
4
5
// GET 请求
HttpUtils.get("http://www.duitang.com/search/")
// 请求参数
.setBody("{\"kw\":\"插画\",\"type\":\"feed\"}")
...

设置请求头参数

请求头参数的设值与请求参数的设值相似

1
2
3
4
5
// GET 请求
HttpUtils.get("http://www.duitang.com")
// 请求头参数
.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0")
...

执行 HTTP 请求

通过调用 execute(BiConsumer<Integer, String>) 方法来执行 HTTP 请求

其中第一个参数为 HTTP 请求结果的状态码值第二个参数为 HTTP 请求结果的文本内容一个完整的示例

1
2
3
4
5
6
7
HttpUtils.get("http://www.duitang.com").execute((status, response) -> {
if (status == 200) {
System.out.println(response);
} else {
System.out.println("--- 请求失败 ---");
}
});