Я хочу проверить, существует ли файл в введенном URL или нет .net - PullRequest
0 голосов
/ 06 января 2011

Я разрабатываю инструмент для проверки ссылок в введенных URL.Предположим, я ввел URL (например, http://www -review-k6.thinkcentral.com / content / hsp / science / hspscience / na / gr3 / se_9780153722271_ / content / nlsg3_006.html ) в текстовое поле 1, и яхотите проверить, существует ли содержимое всех ссылок на удаленном сервере или нет.наконец я хочу файл журнала для неработающих ссылок.

Ответы [ 6 ]

3 голосов
/ 06 января 2011

Вы можете использовать HttpWebRequest .

Обратите внимание на четыре вещи

1) Веб-запрос выдаст исключение, если ссылка не существует

2) Вы можете отключить автоматическое перенаправление

3) Вы также можете проверить, является ли это действительный URL.Если нет, он выдаст исключение UriFormatException.

ОБНОВЛЕНО

4) Для Paige рекомендуется использовать «Head» в запросе. Метод, чтобы он не загружал всеудаленный файл

    static bool UrlExists(string url)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "HEAD";
            request.AllowAutoRedirect = false;
            request.GetResponse();
        }
        catch (UriFormatException)
        {
            // Invalid Url
            return false;
        }
        catch (WebException ex)
        {
            // Valid Url but not exists
            HttpWebResponse webResponse = (HttpWebResponse)ex.Response;
            if (webResponse.StatusCode == HttpStatusCode.NotFound)
            {
                return false;
            }
        }
        return true;
    }
1 голос
/ 06 января 2011

Используйте запрос HTTP HEAD, как описано в этой статье: http://www.eggheadcafe.com/tutorials/aspnet/2c13cafc-be1c-4dd8-9129-f82f59991517/the-lowly-http-head-reque.aspx

1 голос
/ 06 января 2011
bool LinkExist(string link)
{
   HttpWebRequest webRequest = (HttpWebRequest) webRequest.Create(link);
   HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
   return !(webResponse.StatusCode != HttpStatusCode.NotFound);
}
1 голос
/ 06 января 2011

Используйте класс HttpWebResponse:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://www.gooogle.com/");            
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

if (response.StatusCode == HttpStatusCode.NotFound)
 {
     // do something
 }
0 голосов
/ 06 января 2011

Если ваша цель - надежная проверка исходного кода страницы, рассмотрите возможность использования уже написанного инструмента, такого как W3C Link Checker . Он может быть запущен как программа командной строки , которая обрабатывает поиск ссылок, картинок, CSS и т. Д. И проверяет их на правильность. Он также может рекурсивно проверять весь веб-сайт.

0 голосов
/ 06 января 2011

Сделайте HTTP-запрос к URL и посмотрите, получите ли вы ответ 404.Если так, то его не существует.

Вам нужен пример кода?

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