HTTP headers let the client and the server pass additional information with an HTTP request or response. Here, you will learn to add a custom HTTP header with the HttpClient.
We will use the Apache HttpClient, the most widely used HTTP client in Java.
Add a Custom HTTP Header with the HttpClient
In this example program, we will execute an HTTP GET request and add some custom headers.
import org.apache.http.HttpResponse; import org.apache.http.HttpHeaders; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { try (CloseableHttpClient httpclient = HttpClients.createDefault()) { HttpUriRequest request = RequestBuilder.get() .setUri("https://jsonplaceholder.typicode.com/todos/1") // adding headers .setHeader(HttpHeaders.CONTENT_TYPE, "application/json") .setHeader("Authorization", "Bearer 123token") .build(); System.out.println("Executing GET request..."); HttpResponse response = httpclient.execute(request); String responseString = new BasicResponseHandler().handleResponse(response); System.out.println("Response: " + responseString); } } }
We used the RequestBuilder class to specify URI and headers needed for the request.
There is also a way to set the default headers.
Set default headers on the HTTP client in Java
Instead of setting the same headers on every request, we can set default headers that will be added to each request automatically.
import org.apache.http.Header; import org.apache.http.HttpHeaders; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.*; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import java.io.IOException; import java.util.Arrays; public class Test { public static void main(String[] args) throws IOException { // create custom headers Header contentTypeHeader = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json"); Header authorizationHeader = new BasicHeader(HttpHeaders.AUTHORIZATION, "Bearer 123token"); List<Header> headers = Arrays.asList(contentTypeHeader, authorizationHeader); // set custom headers as default headers HttpClient client = HttpClients.custom().setDefaultHeaders(headers).build(); HttpUriRequest request = RequestBuilder.get().setUri("url").build(); client.execute(request); } }
I hope this tutorial was of some help to you. If you work with HttpClient then you might also be interested in learning how to configure HttpClient to accept all SSL certificates.
Happy learning!