WebRequest получить страницу без исключений? - PullRequest
2 голосов
/ 16 апреля 2009

Я хочу проверить состояние страницы (404, перемещено и т. Д.). Как мне это сделать? Банкомат я делаю ниже, который только говорит мне, существует ли страница или нет. Кроме того, я подозреваю, что исключение делает мой код медленным (я проверял это)

static public bool CheckExist(string url)
        {
            HttpWebRequest wreq = null;
            HttpWebResponse wresp = null;
            bool ret = false;

            try
            {
                wreq = (HttpWebRequest)WebRequest.Create(url);
                wreq.KeepAlive = true;
                //wreq.Method = "HEAD";
                wresp = (HttpWebResponse)wreq.GetResponse();
                ret = true;
            }
            catch (System.Net.WebException)
            {
            }
            finally
            {
                if (wresp != null)
                    wresp.Close();
            }
            return ret;
        }

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Вы можете получить код ошибки http следующим образом:

catch (System.Net.WebException e)
{
    int HttpStatusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}
1 голос
/ 16 апреля 2009

Класс HttpWebResponse предоставляет свойство StatusCode, которое возвращает значение из перечисления HttpStatusCode. В случае отсутствия ошибок это напрямую дает вам код состояния (404 не найден, 403 не авторизован, 301 перемещен навсегда, 200 OK и т. Д.). В случае ошибки класс WebException предоставляет свойство Status - взятое из другого перечисления, но вы сможете определить те случаи, которые вы хотите, исходя из того, о чем я думал.

...