WebRequest获取页面没有例外吗?

时间:2009-04-16 00:22:31

标签: c# httpwebrequest httpwebresponse

我想检查页面的状态(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;
        }

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以像这样获取http错误代码:

catch (System.Net.WebException e)
{
    int HttpStatusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}