This example shows you how to get the Http response header values in Java.

1. Standard JDK example.

	URL obj = new URL("http://tuts.heomi.net");
	URLConnection conn = obj.openConnection();
	
	//get all headers
	Map<String, List<String>> map = conn.getHeaderFields();
	for (Map.Entry<String, List<String>> entry : map.entrySet()) {
		System.out.println("Key : " + entry.getKey() + 
                 " ,Value : " + entry.getValue());
	}
	
	//get header by 'key'
	String server = conn.getHeaderField("Server");
	

2. Apache HttpClient example.

	HttpClient client = HttpClientBuilder.create().build();
	HttpGet request = new HttpGet("http://tuts.heomi.net");
	HttpResponse response = client.execute(request);
	
	//get all headers		
	Header[] headers = response.getAllHeaders();
	for (Header header : headers) {
		System.out.println("Key : " + header.getName() 
		      + " ,Value : " + header.getValue());
	}

	//get header by 'key'
	String server = response.getFirstHeader("Server").getValue();

1. URLConnection Example

See a full example to get response headers value via URLConnection.

ResponseHeaderUtil.java

package com.favtuts.http;

import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class ResponseHeaderUtil {

    public static void main(String[] args) {

        try {

            URL obj = new URL("http://tuts.heomi.net");
            URLConnection conn = obj.openConnection();
            Map<String, List<String>> map = conn.getHeaderFields();

            System.out.println("Printing Response Header...\n");

            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
                System.out.println("Key : " + entry.getKey()
                        + " ,Value : " + entry.getValue());
            }

            System.out.println("\nGet Response Header By Key ...\n");
            String server = conn.getHeaderField("Server");

            if (server == null) {
                System.out.println("Key 'Server' is not found!");
            } else {
                System.out.println("Server - " + server);
            }

            System.out.println("\n Done");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Output

Printing Response Header...

Key : null ,Value : [HTTP/1.1 301 Moved Permanently]
Key : Server ,Value : [nginx/1.18.0 (Ubuntu)]
Key : Connection ,Value : [keep-alive]
Key : Content-Length ,Value : [178]
Key : Date ,Value : [Thu, 12 May 2022 06:04:27 GMT]
Key : Location ,Value : [https://tuts.heomi.net/]
Key : Content-Type ,Value : [text/html]

Get Response Header By Key ...

Server - nginx/1.18.0 (Ubuntu)

 Done

2. Apache HttpClient Example

This is an equivalent example, but using Apache HttpClient.

ResponseHeaderUtil.java

package com.favtuts.http;

import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;

public class ResponseHeaderUtil {

    public static void main(String[] args) {
        getResponseHeadersApacheHttpClient();
    }

    private static void getResponseHeadersApacheHttpClient() {
        try {

            HttpClient client = HttpClientBuilder.create().build();
            HttpGet request = new HttpGet("http://tuts.heomi.net");
            HttpResponse response = client.execute(request);

            System.out.println("Printing Response Header...\n");

            Header[] headers = response.getAllHeaders();
            for (Header header : headers) {
                System.out.println("Key : " + header.getName()
                        + " ,Value : " + header.getValue());

            }

            System.out.println("\nGet Response Header By Key ...\n");
            String server = response.getFirstHeader("Server").getValue();

            if (server == null) {
                System.out.println("Key 'Server' is not found!");
            } else {
                System.out.println("Server - " + server);
            }

            System.out.println("\n Done");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

Printing Response Header...

Key : Server ,Value : nginx/1.18.0 (Ubuntu)
Key : Date ,Value : Thu, 12 May 2022 06:12:37 GMT
Key : Content-Type ,Value : text/html; charset=UTF-8
Key : Transfer-Encoding ,Value : chunked
Key : Connection ,Value : keep-alive
Key : Vary ,Value : Accept-Encoding
Key : Link ,Value : <https://www.tuts.heomi.net/wp-json/>; rel="https://api.w.org/"
Key : Strict-Transport-Security ,Value : max-age=31536000

Get Response Header By Key ...

Server - nginx/1.18.0 (Ubuntu)

 Done

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-misc/http

References

  1. Wiki : List of HTTP header fields
  2. How To Get HTTP Request Header In Java
  3. URLConnection.html#getHeaderFields() Java Doc
  4. Apache Http Components – HttpClient
  5. How To Send HTTP Request GET/POST In Java

Leave a Reply

Your email address will not be published. Required fields are marked *