• About Me
  • Java基礎教學
  • 部落格聯播

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

分類: Exception, Java, Java基礎入門 時間:2010/6/8 瀏覽:3,697 瀏覽數 — 更多回應

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


原始碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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();
        }
    }
}

Related Posts Plugin for WordPress, Blogger...

一個回應 to “[Java]利用URLConnection檢查網站狀態”

PingBack List:

  1. [Java]利用URLConnection檢查網站狀態 | 資訊與工作

留下您想說的話:

*