2009-08-20 7 views
3

Nous écrivons un ensemble de services REST et nous renvoyons des erreurs sous la forme de StatusCodes différents.Comment puis-je répondre au StatusCode de WebClient avant qu'il ne déclenche une exception?

Dans notre application client, nous préférons que notre flux de travail ne nous oblige pas à attraper et émettre une exception pour découvrir le code d'erreur.

Existe-t-il un moyen d'indiquer à WebClient ou à HttpWebRequest d'arrêter de lancer des exceptions lorsqu'il rencontre un StatusCode autre que 200?

Répondre

2

Non. La conception indique que tout autre chose que 200 ou 201 est exceptionnel.

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; 
Questions connexes