初识HttpClient

29 阅读2分钟

一、 HttpClient 核心介绍

HttpClient 是 Apache 提供的一个工具包,主要用于在 Java 代码中:

  1. 发送 HTTP 请求
  2. 接收响应数据

在本项目中的应用场景: 当用户在小程序端点击登录时,后端需要通过 HttpClient 调用微信官方的 auth.code2Session 接口,以换取用户的唯一标识 openid

二、 核心 API 与开发步骤

要使用 HttpClient,通常需要掌握以下核心类:

  • CloseableHttpClient:HTTP 客户端对象,负责发起请求。
  • HttpClients:用于创建客户端对象的工具类。
  • HttpGet:对应 HTTP 的 GET 请求。
  • HttpPost:对应 HTTP 的 POST 请求。

通用发送请求步骤

  1. 创建 HttpClient 对象
  2. 创建 Http 请求对象(指定 URL 和请求方式)。
  3. 调用 execute 方法发送请求
  4. 解析响应结果
  5. 关闭资源

三、 实战代码示例

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),把结果(响应数据)带回来交到你手里。