Custom HTTP Header with the Apache HttpClient – 用Apache HttpClient自定义HTTP头

最后修改: 2014年 1月 25日


1. Overview


In this tutorial, we’ll look at how to set a custom header with the HttpClient.


If you want to dig deeper and learn other cool things you can do with the HttpClient – head on over to the main HttpClient tutorial.


2. Set Header on Request – 4.3 and Above

2.按要求设置标题 – 4.3及以上版本

HttpClient 4.3 has introduced a new way of building requests – the RequestBuilder. To set a header, we’ll use the setHeader method – on the builder:

HttpClient 4.3引入了一种构建请求的新方法–RequestBuilder。为了设置一个头,我们将使用setHeader方法–在构建器上:

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

3. Set Header on Request – Before 4.3

3.请求时设置标题 – 在4.3之前

In versions pre 4.3 of HttpClient, we can set any custom header on a request with a simple setHeader call on the request:

在HttpClient 4.3之前的版本中,我们可以通过在请求上简单地调用setHeader来设置任何自定义头信息:

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

As we can see, we’re setting the Content-Type directly on the request to a custom value – JSON.


4. Set Default Header on the Client


Instead of setting the Header on each and every request, we can also configure it as a default header on the Client itself:


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();

This is extremely helpful when the header needs to be the same for all requests – such as a custom application header.


5. Conclusion


This article illustrated how to add an HTTP header to one or all requests sent via the Apache HttpClient.

这篇文章说明了如何向通过Apache HttpClient发送的一个或所有请求添加HTTP头。

The implementation of all these examples and code snippets can be found in the GitHub project.