Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Как узнать, есть ли по ссылке ХТМЛ-станица


Автор: Yama 23.11.2006, 13:44
В приложении есть набор ссылок. Как узнать, какие битые, а какие нет без подгрузки самих страниц или любых других данных по ним?
Если есть примеры, как это можно реализовать - поделитесь, плз!

Автор: arilou 24.11.2006, 00:52
Yama, HttpWebRequest в помощь. И смотреть, будут ли ошибки в респонсе. По-другому никак

Автор: neutrino 2.3.2007, 10:06
Я писал сервис для мониторинга битых ссылок. Каждую ссылку проверял в отдельном потоке. Если интересен весь код, могу выложить (хотите тут?).

Код

       private void asyncCheck()
        {
            Uri uri = new Uri(this.URLToCheck);

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);

            try
            {
                HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                if (webRequest.HaveResponse)
                {
                    if (webResponse.StatusCode == HttpStatusCode.OK)
                        this.responseState = new ResponseState(ResponseType.OK);
                    else
                        this.responseState = new ResponseState(ResponseType.ERROR);
                }
                else
                    this.responseState = new ResponseState(ResponseType.TIMEOUT);
            }
            catch (ThreadAbortException)
            {
                // Manage the situation when the thread is aborted
                webRequest.Abort();
                webRequest = null;
                this.responseState = new ResponseState(ResponseType.TIMEOUT);
            }
            catch (WebException)
            {
                // Network problem
                this.responseState = new ResponseState(ResponseType.NOT_AVAILABLE);
            }
        }

Автор: Plamenk 2.3.2007, 13:25
Можно с помощью регулярных выражений. Что-то типа этого:

Код

(http://|https://)?(www)?\.([a-zA-Z0-9]+[\.\-]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}(/[a-zA-Z0-9]+)*

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)