C#如何检查URL是否存在?

8

如何检查给定 URL 的页面是否存在?

我有以下代码:

private void check(string path)
    {

        try
        {
            Uri uri = new Uri(path);
            WebRequest request = WebRequest.Create(uri);
            request.Timeout = 3000;
            WebResponse response;
            response = request.GetResponse();

        }
        catch(Exception loi) { MessageBox.Show(loi.Message); }

    }

但是这会出现有关代理的错误信息。:(

6
请查看这个问题:https://dev59.com/anNA5IYBdhLWcg3whuZ_。 - Anthony Forloney
2
关于代理的什么错误信息? - Eric J.
1
显然这是一个他不能告诉我们的秘密错误信息。 - Foole
4个回答

3
首先,您需要明白您的问题至少有两个方面,您必须首先检查服务器是否响应,例如使用ping - 这是第一个检查点,同时在此过程中考虑超时,对于哪种超时您将认为页面不存在?
其次,尝试使用许多在Google上可用的方法检索页面,同样,您需要考虑超时,如果服务器花费很长时间才能回复,页面可能仍然“存在”,但服务器只是承受着巨大的压力。

2
如果代理需要使用您的Windows凭据进行身份验证(例如,您在公司网络中),请使用以下内容:
WebRequest request=WebRequest.Create(url);
request.UseDefaultCredentials=true;
request.Proxy.Credentials=request.Credentials;

2
try
{
    Uri uri = new Uri(path);
    HttpWebRequest request = HttpWebRequest.Create(uri);
    request.Timeout = 3000;
    HttpWebResponse response;
    response = request.GetResponse();
    if (response.StatusCode.Equals(200))
    {
        // great - something is there
    }
}
catch (Exception loi) 
{ 
    MessageBox.Show(loi.Message); 
}

你可以检查内容类型和长度,详见MSDN HTTPWebResponse

我更幸运地使用以下方式格式化我的条件,而不是你提供的方式。我知道200是相同的,但我需要使用StatusCode对象进行比较,以便equals按预期工作:response.StatusCode.Equals(response.StatusCode.Equals(HttpStatusCode.OK)) - dkroy

0
猜测而言,不知道具体的错误信息或路径,您可以尝试将 WebRequest 强制转换为 HttpWebRequest,然后设置 WebProxy。
请参见 MSDN: HttpWebRequest - Proxy Property

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接