我编写了此方法来检查页面是否存在:

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;

您可能还需要检查其他状态代码。

10-06 02:49