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