我有以下代码,旨在检查来自文件托管商的链接的可用性,例如rapidshare,extabit,turbobit ........等。我在下面写的代码总是返回HttpStatusCode" OK"因为链接实际上是有效的,但链接中的文件不可用或没有文件。有没有办法检查我想要什么,而不使用任何服务提供的任何API,我的意思是有一种方式使用.Net,让我做我想要的吗?
private bool LinkChecker(string url)
{
string result = string.Empty;
Uri urlCheck = new Uri(url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlCheck);
request.Timeout = 15000;
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception err)
{
return false;
}
switch ((HttpStatusCode)response.StatusCode)
{
case HttpStatusCode.OK:
result = "Ok";
break;
case HttpStatusCode.BadGateway:
result = "No Internet";
break;
case HttpStatusCode.Forbidden:
result = "Link Not Found";
break;
case HttpStatusCode.NotFound:
result = "Link Not Found";
break;
}
if (result == "Ok")
return true;
else
return false;
}
答案 0 :(得分:2)
这真的取决于主持人。
有些主机使用正确的代码返回HTTP响应,但根据我的经验,大多数主机总是返回200 OK。即使找不到页面/文件,许多网站也总是返回200 OK。
有些主机将HTTP重定向返回到“找不到文件”页面,因此您可以使用它(您的新网址将包含文件“filenotfound”。
但我认为最通用的方法是在响应主体中查找某些文本。这意味着您很可能会为每个主机寻找不同的文本,但我真的没有看到任何其他方式。
希望它有所帮助! : - )