title: VirusTotal HTTPS connection Java
body: <p>I am looking to parse a VirusTotal URL, therefor I'm trying to open a connection to the specific link and read the web-page source.</p>
  
  <p>I'm using this code</p>
  
  <pre><code>package boot;
  
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.security.cert.Certificate;
  import java.io.*;
  import javax.net.ssl.HttpsURLConnection;
  import javax.net.ssl.SSLPeerUnverifiedException;
  
  public class Run {
      public static void main(String[] args) {
          new Run().testIt();
      }
      private void testIt() {
          String https_url = "https://www.virustotal.com/en/file/7b6b268cbca9d421aabba5f08533d3dcaba50e0f7887b07ef2bd66bf218b35ff/analysis/";
          URL url;
          try{
              url = new URL(https_url);
              HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
              // dumpl all cert info
              print_https_cert(con);
              System.out.println(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(con);
                  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();
              }
          }
      }
  } 
  </code></pre>
  
  <p>but I get this error</p>
  
  <pre><code>Response Code : 200
  Exception in thread "main" java.lang.IllegalStateException: connection not yet open
      at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getCipherSuite(Unknown Source)
      at sun.net.www.protocol.https.HttpsURLConnectionImpl.getCipherSuite(Unknown Source)
      at boot.Run.print_https_cert(Run.java:38)
      at boot.Run.testIt(Run.java:23)
      at boot.Run.main(Run.java:13)
  </code></pre>
  
  <p>I've tried doing some testing and adjustments but I didn't manage to make it work.</p>
  
  <p>I've also tested couple of other websites and it worked just fine.</p>
  
  <p>Thank you.</p>