0

I am trying to connect to a secured connection URL (https://example.com ) using a Java program to check availability of the site. Generally, I connect to https://example.com in browser by disabling proxy settings. Also, we have installed certificates in trusted root certificates. I have added these certificates to Java Keystore successfully.

  import java.net.URL;
    import java.net.URLConnection;
    import java.security.Security.*;
    import com.sun.net.ssl.*;
    import com.sun.*; 

    import javax.net.ssl.HttpsURLConnection;
    import java.security.cert.Certificate;
    import java.io.*;
    import javax.net.ssl.SSLPeerUnverifiedException;
    import org.omg.CORBA_2_3.portable.InputStream;

    public class TestConn {
    public static void main(String args [])
    {
        try{
                 URL hp = new URL("https://example.com");
                HttpsURLConnection hpCon = (HttpsURLConnection)hp.openConnection();

        boolean isProxy = hpCon.usingProxy();
        System.out.println("is using proxy " + isProxy);
        InputStream obj = (InputStream) hpCon.getInputStream();
        while(obj.read()!=-1){
            System.out.println(obj.read_char());

        }
                System.out.println("content >> " + obj.toString());
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
    }

I have encountered the following error:

java.net.ProtocolException: Server redirected too many  times (20)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at TestConn.main(TestConn.java:28)

Can anyone please help me regarding this exception?

Raedwald
  • 46,613
  • 43
  • 151
  • 237
vamsi krishna
  • 1
  • 1
  • 1
  • 1

1 Answers1

0

If you want to check availability of the site, you should use hpCon.getResponseCode();. Response code 200 means that site is available. Frankly, i don't know your further purpose. This is the modified codes, sure got the output content.

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;

public class Test {
public static void main(String[] args) {

    try {
        URL hp = new URL("https://godaddy.com");
        HttpsURLConnection hpCon = (HttpsURLConnection) hp.openConnection();

        boolean isProxy = hpCon.usingProxy();
        System.out.println("is using proxy " + isProxy);
        InputStream obj = hpCon.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(obj));

        String s;
        while ((s = br.readLine()) != null) {
            System.out.println("content >>" + s);
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
}
THIHA SOE
  • 165
  • 4
  • 9
  • Thank you for the response. My goal is to find the particular site is up and running fine or if the server is down without actually opening the site through a browser. We are connecting the site using HTTPS connection and checking the output content. But, the problem is we are able to access the site through browser but, not able to connect using Java. I am facing the above mentioned issue while doing the same. – vamsi krishna Jan 18 '13 at 06:06
  • so far your goal is output content. Let me do some modification of the code. 'java.io.InputStream obj = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(obj)); String s; while((s= br.readLine())!= null){ System.out.println(s); }' – THIHA SOE Jan 18 '13 at 12:30