2016-08-09 84 views
-1

Ich bin nicht die Fehler in der Zeit zu kontrollieren, wenn der Web-Server einen Fehler zurückgibt: (407) Meine Anwendung Umbrüche am folgenden Punktüberprüfen HTTP-Response-

  //Get Response 
     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 

ich die Antwort bin Validierung zu spät, Wie kann ich die Antwort ohne Systemabsturz testen?

//Get Response 
     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 

     if (httpResponse.StatusCode == HttpStatusCode.OK) 
     { 
      Do something 
     } 
+1

Ist der GetResponse Aufruf eine Ausnahme

<system.net> <defaultProxy useDefaultCredentials="true" > </defaultProxy> </system.net> 

zu vermeiden benutzen? –

+3

Wenn * "Meine Anwendung bricht" * bedeutet, dass Sie [Ausnahme] (https://msdn.microsoft.com/en-us/library/ms173160.aspx) haben, können Sie ['try/catch'] (https : //msdn.microsoft.com/en-us/library/0yd65esw.aspx), um damit umzugehen. – Sinatr

Antwort

1

Sie haben try catch verwenden schließlich blockieren zur Validierung der Antwort als

try 
{ 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
} 
catch(WebException e) 
    { 
     Console.WriteLine("\r\nWeb Exception occurred : {0}",e.Status); 
    } 
catch(Exception e) 
{ 
    Console.WriteLine("Exception: {0}",e.Message); 
} 

} 
finally{ 
//code after checking http response 
} 

Ich denke, Sie sollten auch folgende Code schreiben, um Ausnahme vermeiden

try{ 
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest; 
webRequest.Proxy = WebRequest.DefaultWebProxy; 
webRequest.Credentials = new NetworkCredential("user", "password", "domain"); 
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain"); 
}catch(WebException ex){} 

und auf web.config diese Ausnahme zu werfen

2

Sie können die Ausnahme abfangen:

try 
{ 
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
} 
catch (WebException ex) 
{ 
    if((ex.Response as System.Net.HttpWebResponse).StatusCode == ProxyAuthenticationRequired) 
    { 
     // Do Something 
    } 
} 
+1

Ich würde WebException anstelle von Exception bevorzugen und dann den Ausnahmecode überprüfen. –

+0

Sie haben Recht. Bearbeitet :) –