1. 概述
Java 11 官方引入了Java HttpClient。在此之前,当我们需要使用HTTP客户端时,通常会使用第三方库,如Apollo HttpClient。
在这篇简短教程中,我们将了解如何使用Java HttpClient添加自定义HTTP头。
2. 自定义HTTP头
我们可以使用HttpRequest.Builder
对象的三种方法之一轻松添加自定义头:header()
、headers()
或setHeader
。让我们分别看看它们的用法。
2.1. 使用header()
方法
header()
方法允许我们一次添加一个头。
我们可以多次添加相同的头名称,如下例所示,所有这些头都会被发送:
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.header("X-Our-Header-1", "value1")
.header("X-Our-Header-1", "value2")
.header("X-Our-Header-2", "value2")
.uri(new URI(url)).build();
return httpClient.send(request, HttpResponse.BodyHandlers.ofString());
2.2. 使用headers()
方法
如果我们想一次性添加多个头,可以使用headers()
方法:
HttpRequest request = HttpRequest.newBuilder()
.headers("X-Our-Header-1", "value1", "X-Our-Header-2", "value2")
.uri(new URI(url)).build();
此方法还允许我们为一个头名称添加多个值:
HttpRequest request = HttpRequest.newBuilder()
.headers("X-Our-Header-1", "value1", "X-Our-Header-1", "value2")
.uri(new URI(url)).build();
2.3. 使用setHeader()
方法
最后,我们可以使用setHeader()
方法添加头。但是,与header()
方法不同的是,如果使用相同的头名称多次,它将覆盖之前使用该名称设置的任何头:
HttpRequest request = HttpRequest.newBuilder()
.setHeader("X-Our-Header-1", "value1")
.setHeader("X-Our-Header-1", "value2")
.uri(new URI(url)).build();
在上面的例子中,我们的头的值将为"value2"。
3. 总结
总之,我们已经学习了使用Java HttpClient添加自定义HTTP头的不同方法。
如往常一样,本文的示例代码可在GitHub上找到。