Java HttpClient 与 SSL
1. 概述
在本教程中,我们将探讨如何使用 Java HttpClient 连接到 HTTPS URL。我们还将学习如何使用客户端连接到没有有效 SSL 证书的 URL。
在 Java 的旧版本中,我们更倾向于使用像 Apache HTTPClient 和 OkHttp 这样的库来连接服务器。在 Java 11 中,JDK 添加了一个改进的 HttpClient 库。
让我们探索如何使用它通过 SSL 调用服务。
在本教程中,我们将探讨如何使用 Java HttpClient 连接到 HTTPS URL。我们还将学习如何使用客户端连接到没有有效 SSL 证书的 URL。
在 Java 的旧版本中,我们更倾向于使用像 Apache HTTPClient 和 OkHttp 这样的库来连接服务器。在 Java 11 中,JDK 添加了一个改进的 HttpClient 库。
让我们探索如何使用它通过 SSL 调用服务。
在本教程中,我们将讨论如何向 Java HttpClient 请求添加参数。
从 Java 11 开始,Java HTTPClient 作为内置功能提供。因此,我们可以在不使用像 Apache HttpClient 和 OkHttp 这样的第三方库的情况下发送 HTTP 请求。
HttpRequest.Builder 通过构建器模式帮助我们轻松创建 HTTP 请求并添加参数。
Java HttpClient API 没有提供任何方法来添加查询参数。尽管我们可以利用 Apache HttpClient 中的 URIBuilder 这样的第三方库来构建请求 URI 字符串。让我们看看仅使用 Java 11 中添加的功能会是什么样子:
在本教程中,我们将探讨在使用Apache HttpClient时如何重试HTTP请求。我们还将探索库的默认重试行为以及如何配置它。
在我们深入默认行为之前,我们将创建一个测试类,其中包含HttpClient实例和请求计数器:
public class ApacheHttpClientRetryUnitTest {
private Integer requestCounter;
private CloseableHttpClient httpClient;
@BeforeEach
void setUp() {
requestCounter = 0;
}
@AfterEach
void tearDown() throws IOException {
if (httpClient != null) {
httpClient.close();
}
}
}
在本教程中,我们将展示如何在Apache的HttpClient中启用日志记录。此外,我们将解释库内部的日志实现方式。之后,我们将展示如何启用不同级别的日志记录。
HttpClient库提供了高效、最新和功能丰富的HTTP协议客户端实现。
确实作为一个库,HttpClient不强制实现日志记录。为此,4.5版本使用Commons Logging提供日志记录。类似地,最新版本5.1使用由SLF4J提供的日志门面。两个版本都使用层次结构模式将记录器与它们的配置相匹配。