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

最后修改: 2014年 1月 25日

中文/混合/英文(键盘快捷键:t)

1. Overview

1.概述

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

在本教程中,我们将看看如何用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.

如果你想深入了解并学习你可以用HttpClient做的其他很酷的事情–请到主要HttpClient教程

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()
  .setUri(SAMPLE_URL)
  .setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
  .build();
client.execute(request);

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");
client.execute(request);

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

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

4. Set Default Header on the Client

4.在客户端设置默认头像

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();
client.execute(request);

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

当标头需要对所有的请求都是一样的时候,这是非常有帮助的–比如一个自定义的应用标头。

5. Conclusion

5.结论

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.

所有这些例子和代码片段的实现都可以在GitHub项目中找到。