Что не так с моим HttpWebRequest - PullRequest
1 голос
/ 15 ноября 2011

Я не знаю, чего не хватает в моем коде.

Если я вызываю 404 URL, мой код получает исключение.

HttpWebRequest req = WebRequest.Create(args.Url) as HttpWebRequest;
req.AllowAutoRedirect = true;
req.Timeout = args.TimeOut;
req.UserAgent = args.UserAgent;   
HttpWebResponse answer = req.GetResponse() as HttpWebResponse;
objResult.Status =answer.StatusCode;
Stream stream = answer.GetResponseStream();

Я получаю исключение для req.GetResponse ()

Возникает ошибка, которую я получаю

Удаленный сервер возвратил ошибку: (404) Не найдено.

Я не должен получать HttpStatusCode.NotFound?

Решение:

try
      {
        HttpWebRequest req = WebRequest.Create(args.Url) as HttpWebRequest;
        req.AllowAutoRedirect = true;
        req.Timeout = args.TimeOut;
        req.UserAgent = args.UserAgent;       
        HttpWebResponse answer = req.GetResponse() as HttpWebResponse;

        objResult.Status =answer.StatusCode;       
      }
      catch (WebException ex)
      {
        HttpWebResponse response = ex.Response as HttpWebResponse;
        objResult.Status = response.StatusCode;       
      }

1 Ответ

3 голосов
/ 15 ноября 2011

HttpWebRequest создает исключение для неуспешных статусов ответов.
Это поведение является заданным.

Вы можете получить ответ, перехватив WebException и проверив его свойство Response.

...