|
|
@@ -0,0 +1,60 @@
|
|
|
+package space.anyi.httpClient;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.net.URI;
|
|
|
+import java.net.http.HttpClient;
|
|
|
+import java.net.http.HttpRequest;
|
|
|
+import java.net.http.HttpResponse;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 快速入门:请求的构造 与 响应处理
|
|
|
+ *
|
|
|
+ * <p>使用 JDK 自带的 java.net.http.HttpClient 发送一个 HTTP GET 请求,
|
|
|
+ * 体验一次最基础的「构造请求 -> 发送请求 -> 处理响应」的完整流程。</p>
|
|
|
+ *
|
|
|
+ * <p>请求目标为本机提供的 User Management API 的查询用户列表接口:
|
|
|
+ * GET http://localhost:8080/api/users</p>
|
|
|
+ */
|
|
|
+public class QuickStart {
|
|
|
+
|
|
|
+ /** 服务基地址常量,所有示例都指向本机 API 服务 */
|
|
|
+ private static final String BASE_URL = "http://localhost:8080";
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构造一个 GET 请求并发送,随后打印响应体内容。
|
|
|
+ *
|
|
|
+ * <p>整个过程可以拆分为四步:
|
|
|
+ * <ol>
|
|
|
+ * <li>创建 HttpClient 客户端实例</li>
|
|
|
+ * <li>通过 HttpRequest.Builder 构造请求</li>
|
|
|
+ * <li>调用 send() 同步发送请求,并指定响应处理器</li>
|
|
|
+ * <li>处理响应结果</li>
|
|
|
+ * </ol>
|
|
|
+ * </p>
|
|
|
+ */
|
|
|
+ public void process() throws IOException, InterruptedException {
|
|
|
+ // 1. 创建 HttpClient:newHttpClient() 使用 JDK 默认的配置创建一个客户端
|
|
|
+ HttpClient httpClient = HttpClient.newHttpClient();
|
|
|
+
|
|
|
+ // 2. 构造请求:HttpRequest.newBuilder() 返回一个 Builder,
|
|
|
+ // 通过链式调用逐步配置请求的 URI、方法、请求头等信息
|
|
|
+ HttpRequest request = HttpRequest.newBuilder()
|
|
|
+ // 设置请求的目标地址
|
|
|
+ .uri(URI.create(BASE_URL + "/api/users"))
|
|
|
+ // 指定请求方法为 GET(不调用则默认为 GET,但显式写出更清晰)
|
|
|
+ .GET()
|
|
|
+ // 结束构建,返回不可变的 HttpRequest 对象
|
|
|
+ .build();
|
|
|
+
|
|
|
+ // 3. 发送请求:
|
|
|
+ // send() 是同步方法,会阻塞等待服务器的响应;
|
|
|
+ // 第二个参数是响应处理器 BodyHandler,这里使用 BodyHandlers.ofString()
|
|
|
+ // 直接将响应体转为字符串
|
|
|
+ HttpResponse<String> response =
|
|
|
+ httpClient.send(request, HttpResponse.BodyHandlers.ofString());
|
|
|
+
|
|
|
+ // 4. 处理响应:通过 statusCode() 获取状态码,body() 获取响应体字符串
|
|
|
+ System.out.println("HTTP 状态码: " + response.statusCode());
|
|
|
+ System.out.println("响应体: " + response.body());
|
|
|
+ }
|
|
|
+}
|