當Web服務不可用時,我需要處理異常。在我的應用程序中,我正在請求一個Web服務,它將返回給我一個XML數據。當Web服務可用時,我的應用程序正常工作。但是當Web服務不可用時,我的應用程序會崩潰,以便在java中捕獲該異常。請注意,我正在開發一個android應用程序。如何處理java中Web服務不可用的異常
當Web服務不可用,它看起來喜歡下面的圖像
當Web服務不可用時,我需要處理異常。在我的應用程序中,我正在請求一個Web服務,它將返回給我一個XML數據。當Web服務可用時,我的應用程序正常工作。但是當Web服務不可用時,我的應用程序會崩潰,以便在java中捕獲該異常。請注意,我正在開發一個android應用程序。如何處理java中Web服務不可用的異常
當Web服務不可用,它看起來喜歡下面的圖像
有了這個,你可以檢查Web服務提供或不
public void isAvailable(){
// first check if there is a WiFi/data connection available... then:
URL url = new URL("URL HERE");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Connection", "close");
connection.setConnectTimeout(10000); // Timeout 10 seconds
connection.connect();
// If the web service is available
if (connection.getResponseCode() == 200) {
return true;
}
else return false;
}
在一個真正的多線程環境中,資源可能在檢查完成後立即變得不可用(所以檢查通過),但在實際請求發生之前(因此調用失敗)。人們用文件做同樣的常見錯誤 - 檢查是否存在,然後執行一些操作,而沒有捕捉操作本身的異常。考慮到這種情況,上面的代碼對於生產使用並不是很有幫助。 – Neolisk
當然我同意,它只是一個初學者級別的代碼,而不是生產..響應代碼可以由他/她自己添加任何編碼器,您可以修改我的答案,因爲您希望有經驗的編碼員 –
這是多麼我已經解決了這個問題的幫助的Krishna's代碼
public static boolean isAvailable(String link){
boolean available = false;
URL url = null;
try {
url = new URL(link);
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) url.openConnection();
} catch (IOException e1) {
}
connection.setRequestProperty("Connection", "close");
connection.setConnectTimeout(100000); // Timeout 100 seconds
try {
connection.connect();
} catch (IOException e) {
}
try {
if (connection.getResponseCode() == 200) {
// return true;
available = true;
}
else
available = false;
//return false;
} catch (IOException e) {
e.printStackTrace();
}
return available;
}
檢查響應代碼什麼爲您的情況,並添加一個檢查該響應代碼。您可能需要針對不同的響應代碼採取不同的行動。 – guptakvgaurav