2009-08-20 3 views
3

Wir schreiben eine REST-ähnliche Gruppe von Diensten und wir geben Fehler als unterschiedliche StatusCodes zurück.Wie kann ich auf den StatusCode von WebClient reagieren, bevor es eine Ausnahme auslöst

In unserer Client-Anwendung bevorzugen wir, wenn unser Arbeitsablauf uns nicht zum Abfangen und Auslösen einer Ausnahme benötigt, um den Fehlercode zu ermitteln.

Gibt es eine Möglichkeit, dem WebClient oder HttpWebRequest mitzuteilen, keine Ausnahmen mehr auszulösen, wenn ein anderer Statuscode als 200 auftritt?

Antwort

2

Nein. Das Design sagt alles andere als 200 oder 201 ist außergewöhnlich.

HttpStatusCode httpStatusCode; 
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://example.org/resource"); 
try 
{ 
    using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()) 
    { 
     // handle 200/201 case 
    } 
} 
catch (WebException webException) 
{ 
    if (webException.Response != null) 
    { 
     HttpWebResponse httpWebExceptionResponse = (HttpWebResponse)webException.Response; 
     switch (httpWebExceptionResponse.StatusCode) 
     { 
      case 304: // HttpStatusCode.NotModified 
       break; 
      case 410: // HttpStatusCode.Gone 
       break; 
      case 500: // HttpStatusCode.InternalServerError 
       break; 
      // etc 
     } 
    } 
    else 
    { 
     //did not contact host. Invalid host name? 
    } 
} 
return httpStatusCode; 
Verwandte Themen