2012-08-24 44 views
-2

我有一個簡單的應用程序,在WebView中顯示一個網頁。由於其中一個網址尚未聯機,因此我想要做一個表示它不在線的祝酒,當它在線時,它只會加載網址。抓住URL是否加載

有人知道如何做到這一點?

在此先感謝。

回答

2

打開一個URLConnection,並首先檢查連接的響應代碼。如果這是404,則表示該網站不存在。然後,您可以在那裏做所有需要的網站缺少的東西。示例代碼:

try { 
     Url url = new URL(someStringUrl); 
     HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 
     if(huc.getResponseCode() == 404) { 
      //Site doesnt exist, returned 404 error 
     } 
} catch(Exception e) { 
    e.printStackTrace(); 
} 
+0

感謝它幾乎答案只有我使用一個字符串作爲URL所以這是給在 「url.openconnection」 錯誤。 – user1534326

+0

@ user1534326看我的編輯 –

+0

這就是我會做的。 – DaShaun

0

您可以擴展自己的異常,可以說

public class Exception404 extends Exception { 
} 

再搭上2層不同的異常:

HttpURLConnection huc = null; 

try { 
    Url url = new URL(someStringUrl); 
    huc = (HttpURLConnection) url.openConnection(); 
    if(huc.getResponseCode() == 404) 
     throw new Exception404(); 

    //... 
    //... 
    //... 

} catch(Exception404 e) { 
    e.printStackTrace();  
} catch(Exception e) { 
    e.printStackTrace(); 
} finally { 
    //close connection (saves battery life time) 
    huc.disconnect(); 
} 

或者你可以只拋出同樣的異常處理兩種以同樣的方式失敗

+0

這是什麼與我的不同?他們都有完全相同的結果,只是我發佈的第一個......?如果存在主要區別,請告訴我,我可能會丟失一些東西 –

+0

是的,你是對的。但是,拋出一個異常,使得代碼更具可讀性,因爲你在try塊的末尾處理了意想不到的結果。另外,也許需要拋出304(未修改的since),這將不會被下面的函數處理,而是被調用該函數的函數。這比在成功/失敗時傳遞布爾值更令人信服 –

+0

此外,已關閉連接在嘗試塊的結尾將轉動的Android設備的收音機(電池壽命節省) –

0

嗯,看到這個...

try { 
     // Write your code to access the website here 

}趕上(例外五){

// Your execution will reach here once the site can't be reached 

Toast.makeText(Your_Activity.this, "Site still not online",duration).show(); 

}