2011-03-08 39 views
0

我正在做一個異步HttpWebRequest,如果失敗,我想調用一個備份Web服務。像這樣:HttpWebRequest異常處理

public void CallService1() 
{ 
    HttpWebRequest request = HttpWebRequest.Create("http://MyFirstWebService") 
    request.BeginGetResponse(this.CallService1Completed, request); 
} 

public void CallService1Completed(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 

    try 
    { 
     using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result)) 
     { 
      using (Stream responseStream = response.GetResponseStream()) 
      { 
       // Use Data 
      } 
     } 
    } 
    catch (WebException webException) 
    { 
     if (?????) 
     { 
      CallBackupService2(); 
     } 
    } 
} 

請記住,這是一個移動應用程序,你可能並不總是有互聯網連接。如果沒有互聯網連接,我不想撥打備用服務。如果第一個服務由於某種原因關閉,我只想調用備份服務。我會在上面的'IF'聲明中做什麼?

回答

0

,它可以像執行:

if (NetworkInterface.GetIsNetworkAvailable()) 
{ 
    CallBackupService2(); 
} 
+0

據我瞭解,我們建議嘗試HttpWebRequest的,而不是試圖做這樣的判斷是因爲,這是一個阻塞調用。沒有辦法通過WebException獲取這些信息,這也會更快。 – anon 2011-03-08 11:34:38

+0

也可以使用WebException.Status字段。 http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx – ShahidAzim 2011-03-08 12:17:18