我想使用.net检查输入的URL中的文件是否存在

时间:2011-01-06 04:41:04

标签: c# .net url

我正在开发一个工具,用于验证输入的网址中的链接。假设我输入了一个网址 (例如http://www-review-k6.thinkcentral.com/content/hsp/science/hspscience/na/gr3/se_9780153722271_/content/nlsg3_006.html )在textbox1中,我想检查远程服务器上是否存在所有链接的内容。最后我想要一个破碎链接的日志文件。

6 个答案:

答案 0 :(得分:3)

您可以使用HttpWebRequest

注意四件事

1)如果链接不存在,webRequest将抛出异常

2)您可能想禁用自动重定向

3)您可能还想检查它是否是有效的网址。如果没有,它将抛出UriFormatException。

<强>已更新

4)Per Paige建议,在request.Method使用“Head”,以便它不会下载整个远程文件

    static bool UrlExists(string url)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "HEAD";
            request.AllowAutoRedirect = false;
            request.GetResponse();
        }
        catch (UriFormatException)
        {
            // Invalid Url
            return false;
        }
        catch (WebException ex)
        {
            // Valid Url but not exists
            HttpWebResponse webResponse = (HttpWebResponse)ex.Response;
            if (webResponse.StatusCode == HttpStatusCode.NotFound)
            {
                return false;
            }
        }
        return true;
    }

答案 1 :(得分:1)

使用HttpWebResponse类:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://www.gooogle.com/");            
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

if (response.StatusCode == HttpStatusCode.NotFound)
 {
     // do something
 }

答案 2 :(得分:1)

bool LinkExist(string link)
{
   HttpWebRequest webRequest = (HttpWebRequest) webRequest.Create(link);
   HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
   return !(webResponse.StatusCode != HttpStatusCode.NotFound);
}

答案 3 :(得分:1)

答案 4 :(得分:0)

向网址发出HTTP请求,看看您是否收到了404响应。如果是,那么它就不存在了。

您需要代码示例吗?

答案 5 :(得分:0)

如果您的目标是对页面源进行强大的验证,请考虑使用已编写的工具,例如W3C Link Checker。它可以作为command-line program运行,处理查找链接,图片,CSS等,并检查它们的有效性。它还可以递归检查整个网站。