我有一個簡單的應用程序,在WebView中顯示一個網頁。由於其中一個網址尚未聯機,因此我想要做一個表示它不在線的祝酒,當它在線時,它只會加載網址。抓住URL是否加載
有人知道如何做到這一點?
在此先感謝。
我有一個簡單的應用程序,在WebView中顯示一個網頁。由於其中一個網址尚未聯機,因此我想要做一個表示它不在線的祝酒,當它在線時,它只會加載網址。抓住URL是否加載
有人知道如何做到這一點?
在此先感謝。
打開一個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();
}
您可以擴展自己的異常,可以說
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();
}
或者你可以只拋出同樣的異常處理兩種以同樣的方式失敗
這是什麼與我的不同?他們都有完全相同的結果,只是我發佈的第一個......?如果存在主要區別,請告訴我,我可能會丟失一些東西 –
是的,你是對的。但是,拋出一個異常,使得代碼更具可讀性,因爲你在try塊的末尾處理了意想不到的結果。另外,也許需要拋出304(未修改的since),這將不會被下面的函數處理,而是被調用該函數的函數。這比在成功/失敗時傳遞布爾值更令人信服 –
此外,已關閉連接在嘗試塊的結尾將轉動的Android設備的收音機(電池壽命節省) –
嗯,看到這個...
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();
}
感謝它幾乎答案只有我使用一個字符串作爲URL所以這是給在 「url.openconnection」 錯誤。 – user1534326
@ user1534326看我的編輯 –
這就是我會做的。 – DaShaun