Как получить HTML-код страницы на C #, когда для заголовков установлено значение HTTP / 1.0 404 Not Found

Есть ли способ получить HTML-код веб-страницы, даже если для заголовка установлено значение 404? На некоторых страницах все еще есть текст, и в моем случае мне нужно прочитать этот текст.

Пример кода C # для получения HTML:

 public static string GetHtmlFromUri(string resource)
        {
            string html = string.Empty;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(resource); //Errors here.
            using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
            {
                bool isSuccess = (int)resp.StatusCode < 299 && (int)resp.StatusCode >= 200;
                if (isSuccess)
                {
                    using (StreamReader reader = new StreamReader(resp.GetResponseStream()))
                    {
                        html = reader.ReadToEnd();
                    }
                }
            }
            return html;
        }

А вот страница, которую я создал, чтобы проверить это с ошибками 404: http://bypass.rd.to/headertest.php
Если вы посмотрите в заголовок, вы увидите, что это 404, но текст можно прочитать. Теперь попробуйте получить страницу на C # ...

MessageBox.Show(GetHtmlFromUri("http://bypass.rd.to/headertest.php"));

System.Net.WebException не был обработан
Message = "Удаленный сервер возвратил ошибку: (404) Not Found."
Source = "System"
StackTrace: в System.Net.HttpWebRequest.GetResponse ()


person E3pO    schedule 26.11.2010    source источник


Ответы (1)


Исключение содержит HttpWebResponse, из которого вы можете получить доступ ко всему, что было отправлено обратно. См. этот ответ для примера.

person GraemeF    schedule 26.11.2010