Как я могу ответить на StatusCode WebClient, прежде чем он генерирует исключение - PullRequest
3 голосов
/ 20 августа 2009

Мы пишем REST-подобный набор сервисов и возвращаем ошибки как разные StatusCodes.

В нашем клиентском приложении мы предпочитаем, чтобы наш рабочий процесс не требовал от нас перехвата и приведения исключения для обнаружения кода ошибки.

Есть ли способ указать WebClient или HttpWebRequest прекратить генерировать исключения, когда он обнаруживает StatusCode, отличный от 200?

1 Ответ

2 голосов
/ 20 августа 2009

Нет. Дизайн говорит что-либо кроме 200 или 201 является исключительным.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...