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

Есть ли способ получить 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 ()

1 Ответ

4 голосов
/ 26 ноября 2010

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

...