我编写了此方法来检查页面是否存在:
protected bool PageExists(string url)
{
try
{
Uri u = new Uri(url);
WebRequest w = WebRequest.Create(u);
w.Method = WebRequestMethods.Http.Head;
using (StreamReader s = new StreamReader(w.GetResponse().GetResponseStream()))
{
return (s.ReadToEnd().Length >= 0);
}
}
catch
{
return false;
}
}
我使用它来检查一组页面(从AAAA-AAAZ进行迭代),运行整个循环大约需要3到7秒。有没有更快或更有效的方法来做到这一点?
最佳答案
我认为您的方法相当不错,但是可以通过在调用w.Method = WebRequestMethods.Http.Head;
之前添加GetResponse
来将其更改为仅下载 header 。
这可以做到:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.Method = WebRequestMethods.Http.Head;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
bool pageExists = response.StatusCode == HttpStatusCode.OK;
您可能还需要检查其他状态代码。