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上找到。