Apache HttpComponents 是 Commons HttpClient 在 ASF 下新的项目,创建并维护了 HTTP 相关的底层 Java 组件工具集。
项目包括:
编辑 pom.xml 文件,添加依赖:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
CloseableHttpClient httpClient = HttpClients.createDefault(); // ①
HttpGet request = new HttpGet(url); // ②
HttpResponse response = httpClient.execute(request); // ③
StatusLine status = response.getStatusLine(); // ④
if (status.getStatusCode() >= 200 && status.getStatusCode() < 300) {
HttpEntity entity = response.getEntity(); // ⑤
} else {
throw new ClientProtocolException(status.getStatusCode() + " " + status.getReasonPhrase());
}
httpClient.close();
① 创建默认的 HTTP 客户端;
② 根据 URL 创建 HTTP GET 请求;
③ 执行 HTTP GET 请求,并返回响应;
④ 判断响应状态,状态码 [200, 300) 之间,代表正常否则抛出异常;
⑤ 获取响应内容,可以使用工具类 EntityUtils
获取字符串或字节内容。
HTTP POST 提交 JSON 数据:
CloseableHttpClient httpClient = HttpClients.createDefault(); // ①
HttpPost request = new HttpPost(url); // ②
request.setEntity(new StringEntity(json, "utf-8"));
HttpResponse response = httpClient.execute(request); // ③
StatusLine status = response.getStatusLine(); // ④
if (status.getStatusCode() >= 300) {
throw new ClientProtocolException(status.getStatusCode() + " " + status.getReasonPhrase());
}
httpClient.close();
① 创建默认的 HTTP 客户端;
② 根据 URL 创建 HTTP POST 请求,并设置 HTTP Body;
③ 执行 HTTP POST 请求,并返回响应;
④ 判断响应状态,状态码 [300, +∞) 抛出异常。
HTTP POST 提交表单数据:
TODO
HTTP POST 上传文件:
TODO