Custom HTTP Header with the HttpClient

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

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 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

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 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.

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

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.

Related posts:

Java Program to Implement Sparse Matrix
Prevent Brute Force Authentication Attempts with Spring Security
Java Program to Implement Sorted List
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to Check whether Undirected Graph is Connected using DFS
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
JWT – Token-based Authentication trong Jersey 2.x
Anonymous Classes in Java
Guide to java.util.concurrent.Future
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Implement Knight’s Tour Problem
JUnit5 Programmatic Extension Registration with @RegisterExtension
Encode a String to UTF-8 in Java
Show Hibernate/JPA SQL Statements from Spring Boot
Spring NoSuchBeanDefinitionException
Java Program to Check whether Directed Graph is Connected using DFS
Spring Boot: Customize the Jackson ObjectMapper
Spring Boot Gradle Plugin
Spring Boot - Admin Server
XML Serialization and Deserialization with Jackson
Spring Boot - Twilio
Spring Autowiring of Generic Types
Spring Boot - File Handling
Giới thiệu HATEOAS
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Send an email using the SMTP protocol
Java Program to Find the Minimum value of Binary Search Tree
Converting a Stack Trace to a String in Java
Introduction to Using FreeMarker in Spring MVC
Optional trong Java 8
Configure a RestTemplate with RestTemplateBuilder
Java Program to Create a Random Graph Using Random Edge Generation