使用 Java 11 的 HttpClient 处理 RESTful Web 服务
在现代 Web 开发中,与 RESTful Web 服务交互是一项核心任务。Java 作为一种广泛使用的编程语言,提供了多种处理 HTTP 请求的方法。在 Java 11 之前,开发者通常使用 HttpURLConnection
或第三方库(如 Apache HttpClient)。然而,这些方法要么过于底层,要么需要额外依赖。Java 11 引入了全新的 HttpClient
API,位于 java.net.http
包中,提供了一种更现代化、灵活的方式来处理 HTTP 通信。本文将详细介绍如何使用 Java 11 的 HttpClient 处理 RESTful Web 服务,并通过实际示例展示其功能。
什么是 HttpClient?
HttpClient
是 Java 11 引入的标准 API,用于发送 HTTP 请求和接收响应。它支持以下关键特性:
- 协议支持:兼容 HTTP/1.1 和 HTTP/2,HTTP/2 提供头部压缩和多路复用等性能优化。
- 同步和异步:支持阻塞(同步)和非阻塞(异步)请求,适合不同应用场景。
- 构建器模式:使用流畅的构建器模式配置客户端和请求。
- 响应处理:通过
BodyHandlers
提供多种方式处理响应体,如字符串、字节数组或文件。 - 其他功能:支持重定向、代理、认证和 WebSocket。
与旧的 HttpURLConnection
相比,HttpClient 更易用,功能更丰富,适合现代 Web 应用的需要。它不仅限于 RESTful 服务,还可用于下载文件、访问网页等任何需要从 URL 读取数据的场景。
创建 HttpClient 实例
要使用 HttpClient,首先需要创建一个 HttpClient
实例。HttpClient
使用构建器模式,允许配置协议版本、重定向策略等。以下是一个示例:
import java.net.http.HttpClient;
import java.net.http.HttpClient.Redirect;
import java.net.http.HttpClient.Version;HttpClient client = HttpClient.newBuilder().version(Version.HTTP_2) // 优先使用 HTTP/2.followRedirects(Redirect.NORMAL) // 自动跟随重定向.build();
配置说明:
version(Version.HTTP_2)
:尝试使用 HTTP/2,若服务器不支持则回退到 HTTP/1.1。followRedirects(Redirect.NORMAL)
:自动处理重定向,最多跟随一定次数。- 其他可选配置包括代理(
proxy
)、认证(authenticator
)等。
创建的 HttpClient
实例是不可