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
We can set any custom header on a request with a simple setHeader call on the request:
@Test
void whenRequestHasCustomContentType_thenCorrect() throws IOException {
final HttpGet request = new HttpGet(SAMPLE_URL);
request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
try (CloseableHttpClient client = HttpClients.createDefault()) {
String response = client.execute(request, new BasicHttpClientResponseHandler());
//do something with response
}
}
As we can see, we’re setting the Content-Type directly on the request to a custom value – JSON.
3. Set Header on Request with RequestBuilder using HttpClient 4.5
With HttpClient 4.5 we can use RequestBuilder to set the header. To set a header, we’ll use the setHeader method – on the builder:
HttpClient client = HttpClients.custom().build();
HttpUriRequest request = RequestBuilder.get()
.setUri(SAMPLE_URL)
.setHeader(HttpHeaders.CONTENT_TYPE, "application/json")
.build();
client.execute(request);
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:
@Test
void givenConfigOnClient_whenRequestHasCustomContentType_thenCorrect() throws IOException {
final HttpGet request = new HttpGet(SAMPLE_URL);
final Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");
final List<Header> headers = Lists.newArrayList(header);
try (CloseableHttpClient client = HttpClients.custom()
.setDefaultHeaders(headers)
.build()) {
String response = client.execute(request, new BasicHttpClientResponseHandler());
//do something with response
}
}
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.
The implementation of all these examples and code snippets can be found in the GitHub project. Apache HttpClient 4 examples can be found in our Apache HttpClient 4 module.