一、 HttpClient 核心介绍
HttpClient 是 Apache 提供的一个工具包,主要用于在 Java 代码中:
- 发送 HTTP 请求。
- 接收响应数据。
在本项目中的应用场景: 当用户在小程序端点击登录时,后端需要通过 HttpClient 调用微信官方的 auth.code2Session 接口,以换取用户的唯一标识 openid。
二、 核心 API 与开发步骤
要使用 HttpClient,通常需要掌握以下核心类:
CloseableHttpClient:HTTP 客户端对象,负责发起请求。HttpClients:用于创建客户端对象的工具类。HttpGet:对应 HTTP 的 GET 请求。HttpPost:对应 HTTP 的 POST 请求。
通用发送请求步骤:
- 创建 HttpClient 对象。
- 创建 Http 请求对象(指定 URL 和请求方式)。
- 调用
execute方法发送请求。 - 解析响应结果。
- 关闭资源。
三、 实战代码示例
1. 发送 GET 请求(示例:查询营业状态)
// 1. 创建客户端对象
CloseableHttpClient httpClient = HttpClients.createDefault();
// 2. 创建请求对象
HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
// 3. 执行请求并接收响应
CloseableHttpResponse response = httpClient.execute(httpGet);
// 4. 解析结果
int statusCode = response.getStatusLine().getStatusCode(); // 获取状态码
HttpEntity entity = response.getEntity(); // 获取响应体
String body = EntityUtils.toString(entity); // 转换为字符串
// 5. 关闭资源
response.close();
httpClient.close();
注:GET 请求的参数通常直接拼接在 URL 路径后。
2. 发送 POST 请求(示例:登录接口)
POST 请求通常需要携带 JSON 格式的请求体:
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
// 封装 JSON 请求参数
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "admin");
jsonObject.put("password", "123456");
StringEntity entity = new StringEntity(jsonObject.toString());
entity.setContentEncoding("utf-8");
entity.setContentType("application/json"); // 必须指定内容类型为 JSON
httpPost.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPost);
// ...后续解析与关闭资源逻辑同上
类比理解: 使用 HttpClient 就像是在你的 Java 代码里请了一位“办事员”。以前只能由用户通过浏览器(亲自动身)去访问微信服务器;现在你给了办事员一张“介绍信”(请求对象 HttpGet/Post),办事员就会跑一趟微信办事处(execute),把结果(响应数据)带回来交到你手里。