2

我想检查页面的状态(404、已移动等)。我该怎么做?ATM 我正在​​做下面的事情,它只会告诉我页面是否存在。另外,我怀疑异常使我的代码变慢(我测试过)

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;
        }
4

2 回答 2

1

HttpWebResponse 类公开了一个 StatusCode 属性,该属性从 HttpStatusCode 枚举中返回一个值。在非错误情况下,这会直接为您提供状态码(404 未找到、403 未经授权、301 永久移动、200 正常等等)。在错误情况下,WebException 类公开了一个 Status 属性——取自不同的枚举,但您将能够从我认为的情况中识别出您想要的情况。

于 2009-04-16T00:44:07.247 回答
1

你可以得到这样的http错误代码:

catch (System.Net.WebException e)
{
    int HttpStatusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}
于 2009-04-16T00:50:58.197 回答