2011-03-08 44 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