Чтение HttpStatusCode, когда удаленный сервер выдает внутреннюю ошибку - PullRequest
0 голосов
/ 22 сентября 2010

Я пытаюсь прочитать код ответа HTTP с удаленного сервера, но у меня возникают проблемы, когда он выдает внутреннюю ошибку сервера.В следующем коде GetResponse () может вызвать исключение WebException, когда удаленный компьютер возвращает ошибку.В настоящее время я улавливаю ошибку и предполагаю, что это HttpStatusCode.InternalServerError, но это часто не правильно.

var req = (HttpWebRequest)WebRequest.Create(uri);
HttpStatusCode responseCode;
try
{
  using (var resp = (HttpWebResponse)req.GetResponse())
  {
    responseCode = resp.StatusCode;
  }
}
catch (WebException)
{
  responseCode = HttpStatusCode.InternalServerError;
}

Итак, вопрос такой: независимо от того, какие ошибки выдает удаленный сервер, как я могузахватить только код удаленного ответа?Мне нужно знать, какой это тип ошибки;Есть ли способ получить это из HttpWebResponse без попытки взломать его?Спасибо!

1 Ответ

1 голос
/ 22 сентября 2010

Используйте веб-исключение, которое выдается, чтобы получить ответ, который содержит код состояния:

catch (WebException e)
{
    HttpWebResponse response = (HttpWebResponse) e.Response;
    responseCode = response.StatusCode;
}

Я согласен, это немного раздражает. Я не знаю, как заставить HttpWebRequest просто дать вам ответ, не выдавая исключения (предоставив вам возможность проверить код состояния самостоятельно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...