[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這一篇。
這是範例的結果:

原始碼如下:
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(); } } } |



一個回應 to “[Java]利用URLConnection檢查網站狀態”
PingBack List:
留下您想說的話: