Contents

Apache HTTPClient自定义HTTP标头

1. 概述

在本教程中,我们将了解如何使用 HttpClient 设置自定义标头。

如果您想更深入地挖掘并学习可以使用 HttpClient 做的其他很酷的事情- 前往HttpClient 教程

2. 根据请求设置标头 - 4.3 及更高版本

HttpClient 4.3 引入了一种构建请求的新方法——RequestBuilder。要设置标题,我们将使用构建器上的setHeader方法:

HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
  .setUri(SAMPLE_URL)
  .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  .build();
client.execute(request);

3. 根据请求设置标头 - 4.3 之前

在 HttpClient 4.3 之前的版本中,我们可以在请求上设置任何自定义标头,只需对请求进行简单的setHeader调用:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(SAMPLE_URL);
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
client.execute(request);

正如我们所见,我们直接在请求中将Content-Type设置为自定义值 - JSON。

4. 在客户端设置默认标题

除了在每个请求上设置标头之外,我们还可以将其配置为客户端本身的默认标头:

Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");
List<Header> headers = Lists.newArrayList(header);
HttpClient client = HttpClients.custom().setDefaultHeaders(headers).build();
HttpUriRequest request = RequestBuilder.get().setUri(SAMPLE_URL).build();
client.execute(request);

当所有请求的标头都需要相同时(例如自定义应用程序标头),这非常有用。