我正在开发一个工具,用于验证输入的网址中的链接。假设我输入了一个网址 (例如http://www-review-k6.thinkcentral.com/content/hsp/science/hspscience/na/gr3/se_9780153722271_/content/nlsg3_006.html )在textbox1中,我想检查远程服务器上是否存在所有链接的内容。最后我想要一个破碎链接的日志文件。
答案 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)
使用HTTP HEAD请求,如本文所述:http://www.eggheadcafe.com/tutorials/aspnet/2c13cafc-be1c-4dd8-9129-f82f59991517/the-lowly-http-head-reque.aspx
答案 4 :(得分:0)
向网址发出HTTP请求,看看您是否收到了404响应。如果是,那么它就不存在了。
您需要代码示例吗?
答案 5 :(得分:0)
如果您的目标是对页面源进行强大的验证,请考虑使用已编写的工具,例如W3C Link Checker。它可以作为command-line program运行,处理查找链接,图片,CSS等,并检查它们的有效性。它还可以递归检查整个网站。