获取依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 仓库地址 -->
<repositories>
<repository>
<id>github-maven-repo</id>
<url>https://raw.github.com/fanlychie/maven-repo/releases</url>
</repository>
</repositories>
<dependencies>
<!-- 声明依赖,版本信息参考:https://github.com/fanlychie/commons-httpclient/releases -->
<dependency>
<groupId>org.fanlychie</groupId>
<artifactId>commons-httpclient</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>

环境要求

JDK1.8 或以上版本

项目地址

https://github.com/fanlychie/commons-httpclient

GET 请求

1
2
3
4
5
6
7
8
9
10
// HTTP URI GET 请求
HttpClientUtils.get("http://huaban.com/search/")
// 请求参数
.addParameter("q", "2017")
// 请求参数
.addParameter("sort", "created_at")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});
参数 类型 描述
statusCode int 响应的状态码值
responseText string 响应的文本内容

完整示例 ( GET/PUT/POST/DELETE 拥有同样的配置项 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// HTTP URI GET 请求
HttpClientUtils.get("http://huaban.com/search/")
// 请求参数
.addParameter("q", "2017")
// 请求参数
.addParameter("sort", "created_at")
// 请求头参数
.addHeader("arg", "value")
// 设置响应内容编码, 默认 UTF-8
.setContentEncoding("UTF-8")
// 设置连接超时时间, 默认30秒
.setConnectTimeout(30 * 1000)
// 设置读取超时时间, 默认3分钟
.setReadTimeout(3 * 60 * 1000)
// 设置失败重试次数, 默认3次
.setRetryTimes(3)
// 设置 HTTP 代理, HTTPS 代理通过 setHttpsProxy 设置
.setHttpProxy("116.226.136.135", 8118)
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

DELETE 请求

1
2
3
4
5
6
7
8
9
10
// HTTP URI DELETE 请求
HttpClientUtils.delete("http://domain.com")
// 请求参数
.addParameter("arg1", "value1")
// 请求参数
.addParameter("arg2", "value2")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

POST 请求

普通表单提交

键值对参数:

1
2
3
4
5
6
7
8
9
10
// HTTP 普通表单 POST 请求
HttpClientUtils.post("http://domain.com")
// 请求参数
.addParameter("arg1", "value1")
// 请求参数
.addParameter("arg2", "value2")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

JSON 参数:

1
2
3
4
5
6
7
8
// HTTP 普通表单 POST 请求
HttpClientUtils.post("http://domain.com")
// JSON 请求参数
.addJSONParameter("{\"arg1\":\"value1\",\"arg2\":\"value2\"}")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

文件上传表单

1
2
3
4
5
6
7
8
9
10
11
12
// HTTP 文件上传表单 POST 请求
HttpClientUtils.postMultipartForm("http://domain.com")
// 普通参数
.addParameter("arg1", "value1")
// 普通参数
.addParameter("arg2", "value2")
// 文件参数, 或输入流参数
.addParameter("file", new File("pom.xml"))
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

PUT 请求

普通表单提交

键值对参数:

1
2
3
4
5
6
7
8
9
10
// HTTP 普通表单 PUT 请求
HttpClientUtils.put("http://domain.com")
// 请求参数
.addParameter("arg1", "value1")
// 请求参数
.addParameter("arg2", "value2")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

JSON 参数:

1
2
3
4
5
6
7
8
// HTTP 普通表单 PUT 请求
HttpClientUtils.put("http://domain.com")
// JSON 请求参数
.addJSONParameter("{\"arg1\":\"value1\",\"arg2\":\"value2\"}")
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

文件上传表单

1
2
3
4
5
6
7
8
9
10
11
12
// HTTP 文件上传表单 PUT 请求
HttpClientUtils.putMultipartForm("http://domain.com")
// 普通参数
.addParameter("arg1", "value1")
// 普通参数
.addParameter("arg2", "value2")
// 文件参数, 或输入流参数
.addParameter("file", new File("pom.xml"))
// 执行请求
.execute((statusCode, responseText) -> {
// do something
});

调试日志

1
log4j.logger.org.fanlychie.commons.httpclient = DEBUG