$show=/label

Custom HTTP Header with the HttpClient

SHARE:

A quick guide to set custom HTTP Header in Apache HTTPClient request. On HttpRequest call setHeader() method to set HttpHeaders content type as JSON. Covered for various versions of HttpClient (4.3 before and after).

1. Introduction


In this tutorial, You'll learn today how to set custom HTTP Header to HTTPClient Request. If you want to learn and dig deeper, move to the tutorial section Apache HTTPClient here.

All examples in this post, We will use the domain "http://www.google.com" for creating requests. Because it is considered as always up and running.

Sometimes in the interview, the same is asked as "How to send POST parameters with RequestBuilder?"

Custom HTTP Header with the HttpClient



2. Set Custom HTTP Header on Request – 4.3 and Above


HttpClient 4.3 has introduced a new way of building requests with RequestBuilder. RequestBuilder.get() method returns the request. To set the header on the HttpRequest, we'll use the setHeader() method on the builder.


The below example is to set the header as below.

package com.java.w3schools.blog.HttpClient;

import java.io.IOException;

import org.apache.http.HttpHeaders;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.HttpClients;

public class HttpHeaderSetHeaderExample {

 private static String URI = "http://www.google.com";

 public static void main(String[] args) throws ClientProtocolException, IOException {
  HttpClient client = HttpClients.custom().build();
  HttpUriRequest request = RequestBuilder.get().setUri(URI)
    .setHeader(HttpHeaders.CONTENT_TYPE, "application/json").build();
  client.execute(request);

  System.out.println("Getting the header info from request");
  System.out.println("request header propery name : " + request.getAllHeaders()[0].getName());
  System.out.println("request header propery value : " + request.getAllHeaders()[0].getValue());

 }

}

Output:

Getting the header info from request
request header propery name : Content-Type
request header propery value : application/json

3. Set Custom HTTP Header on Request – Before 4.3


It is quite different from version 4.3.  In the older version, you need to use the HttpGet class to create the request. The object of HttpGet is considered a request object. On HttpGet, We'll call setHeader() method. Finally, Invoke the execute() method on HttpClient.

In the below example, we have set the many properties as part of the header.

package com.java.w3schools.blog.HttpClient;

import java.io.IOException;

import org.apache.http.Header;
import org.apache.http.HttpHeaders;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class HttpHeaderSetHeaderExample4_3Before {

 private static String URI = "http://www.google.com";

 public static void main(String[] args) throws ClientProtocolException, IOException {
  HttpClient client = new DefaultHttpClient();
  HttpGet request = new HttpGet(URI);
  request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
  request.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US,en;q=0.5");
  request.setHeader(HttpHeaders.ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  request.setHeader(HttpHeaders.CONNECTION, "keep-alive");
  request.setHeader(HttpHeaders.CACHE_CONTROL, "max-age=0");
  request.setHeader(HttpHeaders.USER_AGENT,
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0");
  request.setHeader(HttpHeaders.HOST, "http://www.google.com");

  client.execute(request);

  System.out.println("Getting the header info from request before HttpClient 4.3 version.");

  Header[] headers = request.getAllHeaders();

  for (Header header : headers) {
   System.out.println("request header propery : " + header.getName() + " Value : " + header.getValue());

  }

 }

}

Output:

Getting the header info from request before HttpClient 4.3 version.
request header propery : Accept-Encoding Value : gzip, deflate, br
request header propery : Accept-Language Value : en-US,en;q=0.5
request header propery : Accept Value : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
request header propery : Connection Value : keep-alive
request header propery : Cache-Control Value : max-age=0
request header propery : User-Agent Value : Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
request header propery : Host Value : http://www.google.com

4. Set Default Header on the Client


There is an option to set common headers to all requests at once. In this approach, setting up headers info is done only once.

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

When Creating HTTPClient, call setDefaultHeaders() method which takes List of Headers and set them to each request.

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

package com.java.w3schools.blog.HttpClient;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

import org.apache.http.Header;
import org.apache.http.HttpHeaders;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.HttpParams;

public class HttpHeaderSetHeaderExample4_3Before {

 private static String URI = "http://www.google.com";

 public static void main(String[] args) throws ClientProtocolException, IOException {

  Header header1 = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");
  Header header2 = new BasicHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");
  Header header3 = new BasicHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US,en;q=0.5");
  Header header4 = new BasicHeader(HttpHeaders.ACCEPT,
    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  Header header5 = new BasicHeader(HttpHeaders.CONNECTION, "keep-alive");
  Header header6 = new BasicHeader(HttpHeaders.CACHE_CONTROL, "max-age=0");
  Header header7 = new BasicHeader(HttpHeaders.USER_AGENT,
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0");
  Header header8 = new BasicHeader(HttpHeaders.HOST, "http://www.google.com");

  List<Header> headers = Arrays.asList(header1, header2, header3, header4, header5, header6, header7, header8);
  HttpClient client = HttpClients.custom().setDefaultHeaders(headers).build();
  HttpUriRequest request = RequestBuilder.get().setUri(URI).build();
  client.execute(request);

 }

}

If you want to add additional headers in a request, you can then using the setHeader() method on a particular request.

5. Custom HTTP Header Exceptions


If you try to access any of unsupported operations such as client.getParams().

HttpParams allHeaders = client.getParams();

The above code produces the below error.

Exception in thread "main" java.lang.UnsupportedOperationException
 at org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:211)
 at com.java.w3schools.blog.HttpClient.HttpHeaderSetHeaderExample4_3Before.main(HttpHeaderSetHeaderExample4_3Before.java:40)

6. Conclusion


In this article, We've seen how to set the custom header information to the HTTP Request.

Example programs to set HTTP headers on each request in version 4.3 and above. And also setting up default to all requests in a client.

The examples shown are available over GitHub

GitHub Code

Ref for Request Headers

Ref 2

COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Custom HTTP Header with the HttpClient
Custom HTTP Header with the HttpClient
A quick guide to set custom HTTP Header in Apache HTTPClient request. On HttpRequest call setHeader() method to set HttpHeaders content type as JSON. Covered for various versions of HttpClient (4.3 before and after).
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL29NauIYgKPrRVvUVrImPL_VOognzqO67PYBEP1s2e7cF06gDkqHlIWwus3KUQUv059IjuGW8d_igdT8Zu9mUCZrCTSEcsr5pESQCaoMKsHfIpPHjMgvexMAOwkuKXiAJsO1r2bXbk6M/s640/Custom+HTTP+Header+with+the+HttpClient.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL29NauIYgKPrRVvUVrImPL_VOognzqO67PYBEP1s2e7cF06gDkqHlIWwus3KUQUv059IjuGW8d_igdT8Zu9mUCZrCTSEcsr5pESQCaoMKsHfIpPHjMgvexMAOwkuKXiAJsO1r2bXbk6M/s72-c/Custom+HTTP+Header+with+the+HttpClient.png
JavaProgramTo.com
https://www.javaprogramto.com/2020/04/httpclient-custom-http-header.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2020/04/httpclient-custom-http-header.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content