Here’s a simple Java HTTPS client to demonstrate the use of HttpsURLConnection class to send a HTTP GET request yo get the https URL content and certificate detail.

P.S You may interest at this example – automate login a website with HttpsURLConnection.
HttpsClient.java

package com.favtuts.http;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;

public class HttpsClient {

    public static void main(String[] args)
    {
        new HttpsClient().testIt();
    }

    private void testIt() {
        String https_url = "https://www.google.com";
        URL url;
        try {
            url = new URL(https_url);
            HttpsURLConnection con = (HttpsURLConnection)url.openConnection();

            //dump all cert info
            print_https_cert(con);

            //dump all the content
            print_content(con);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    private void print_https_cert(HttpsURLConnection con) {
        if (con!=null) {
            try {
                System.out.println("Response Code : " + con.getResponseCode());
	            System.out.println("Cipher Suite : " + con.getCipherSuite());
	            System.out.println("\n");

                Certificate[] certs = con.getServerCertificates();
                for(Certificate cert : certs){
                    System.out.println("Cert Type : " + cert.getType());
                    System.out.println("Cert Hash Code : " + cert.hashCode());
                    System.out.println("Cert Public Key Algorithm : " 
                                                    + cert.getPublicKey().getAlgorithm());
                    System.out.println("Cert Public Key Format : " 
                                                    + cert.getPublicKey().getFormat());
                    System.out.println("\n");
                }
            } catch (SSLPeerUnverifiedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    private void print_content(HttpsURLConnection con) {
        if (con != null) {
            try {
		
                System.out.println("****** Content of the URL ********");			
                BufferedReader br = 
                    new BufferedReader(
                        new InputStreamReader(con.getInputStream()));
                         
                String input;
                         
                while ((input = br.readLine()) != null){
                   System.out.println(input);
                }
                br.close();
                         
             } catch (IOException e) {
                e.printStackTrace();
             }
        }
    }
}

Output…

Response Code : 200
Cipher Suite : TLS_AES_256_GCM_SHA384


Cert Type : X.509
Cert Hash Code : 741123545
Cert Public Key Algorithm : EC
Cert Public Key Format : X.509


Cert Type : X.509
Cert Hash Code : 266225904
Cert Public Key Algorithm : RSA
Cert Public Key Format : X.509


Cert Type : X.509
Cert Hash Code : 1081005260
Cert Public Key Algorithm : RSA
Cert Public Key Format : X.509


****** Content of the URL ********
<!doctype html><html><head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> .......

Note

For more detail usage, please refer to this example – Send HTTP Request GET/POST In Java

Download Source Code

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

$ cd java-misc/http

References

  1. Send HTTP Request GET/POST In Java
  2. Apache HttpClient examples

Leave a Reply

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