1

I want to write a Java program which will hit a URL and will print the status code(i.e., 200, 404, etc.). I am doing this using the HttpUrlConnection api, but it only shows the exception, and does not print the status code.

URL url = new URL("https://abc.com/test.html");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();  
System.out.println("code: "+code);
andyg0808
  • 1,367
  • 8
  • 18
anonymous
  • 244
  • 2
  • 4
  • 23

4 Answers4

3

I tried the your code as the following and it worked fine for me:

import java.net.*;

public class Action 
{

    public static void main(String[] args)
    {
        try
        {
            URL url = new URL("http://localhost:8888");
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();

            int code = connection.getResponseCode();  
            System.out.println("code: "+code);
        }
        catch(Exception e)
        {

        }

    }
}


also with google.

Soosh
  • 812
  • 1
  • 8
  • 24
1

You will get a response code from a URL only if you are able to reach that URL. In your code you seems to be using a non existing URL and hence must be getting not reachable host exception.

Try to reach a valid URL and check the response code:

URL url = new URL("https://google.com");
Juned Ahsan
  • 67,789
  • 12
  • 98
  • 136
0
URL url = new URL("https://www.google.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();  
System.out.println("code: "+code);

Try using some other url, because the url you are using is invalid. 'https://abc.com/test.html' - no such page exists, so it is giving exception. try a valid url and it will work fine.

Jhanvi
  • 5,069
  • 8
  • 32
  • 41
0

Even I am getting the same exception i.e java.net.ConnectException: Connection timed out: connect if I am not adding the proxy & port in your code.

java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
    at edu.sandip.TestURLConnection.main(TestURLConnection.java:23)

This exception you are getting because you are executing the code on your organization behind your organization proxy.

please use the below modified code. you will get the 200 OK as responseCode.

    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLConnection;

    import javax.net.ssl.HttpsURLConnection;



    public class TestURLConnection {

        /**
         * @param args
         */
        public static void main(String[] args) {
            try{
                URL url = new URL("https://www.google.com/");
                System.setProperty("https.proxyHost", "XXX.XXX.XXX.XX");
                System.setProperty("https.proxyPort", "80"); 
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                //HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
                connection.setRequestMethod("GET");
                connection.connect();

                int code = connection.getResponseCode();  
                System.out.println("code: "+code);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    }

NOTE: 1. You need to get the proxyHost IP from your organization network admin. 2. You should use HttpsURLConnection for accessing https URL.

Sandy
  • 972
  • 5
  • 15
  • 28