[Java]利用URLConnection檢查網站狀態

java.net.URLConnection是一個Http Connecion物件,可以用來連接網站,並處理回傳的資訊資料,當然也可以使用socket連線來做這些事情,不過會顯的麻煩多了。

利用java.net.URLConnection可以直接取得response的Status來判斷網站是不存在、連線錯誤、無法存取,而如果需要更詳細的回傳資訊可以增加給於的Header。而如果需要取得網址的ip則可使用java.net.Inet4Address.getByName(網址名稱)

有一點要注意的是在JDK1.4以前並有沒有setReadTimeout這個函數,所以需要自己實作一個HttpURLConnectionTimeout來操作TimeOut,可以參考Adding Socket Timeout to java.net.URLConnection這一篇。

這是範例的結果:

char.png

原始碼如下:

public class TestURLStatus {
    public static void main(String args[]) {
        try {
            java.net.URL url = new java.net.URL(
                    "http://tw.yahoo.com/123123");
            java.net.HttpURLConnection uc = (java.net.HttpURLConnection) url
                    .openConnection();
            uc.setRequestProperty("User-agent", "IE/6.0");
            uc.setReadTimeout(30000);// 設定timeout時間
            uc.connect();// 連線
            System.out.println("網址/ip位置:"+java.net.Inet4Address.getByName(url.getHost()));
            int status = uc.getResponseCode();
            System.out.println(status);
            switch (status) {
            case java.net.HttpURLConnection.HTTP_GATEWAY_TIMEOUT://504
                System.out.println("連線網址逾時!");
                break;
            case java.net.HttpURLConnection.HTTP_FORBIDDEN://403
                System.out.println("連線網址禁止!");
                break;
            case java.net.HttpURLConnection.HTTP_INTERNAL_ERROR://500
                System.out.println("連線網址錯誤或不存在!");
                break;
            case java.net.HttpURLConnection.HTTP_NOT_FOUND://404
                System.out.println("連線網址不存在!");
                break;
            case java.net.HttpURLConnection.HTTP_OK:
                System.out.println("OK!");
                break;

            }

        } catch (java.net.MalformedURLException e) {
            System.out.println("網址格式錯誤!!!");
            e.printStackTrace();
        } catch (java.io.IOException e) {
            System.out.println("連線有問題!!!!!!");
            e.printStackTrace();
        }
    }
}

One thought to “[Java]利用URLConnection檢查網站狀態”

發表迴響