Winforms链接检查器

时间:2012-09-10 06:58:06

标签: c# winforms

我有以下代码,旨在检查来自文件托管商的链接的可用性,例如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;
    }

1 个答案:

答案 0 :(得分:2)

这真的取决于主持人。

有些主机使用正确的代码返回HTTP响应,但根据我的经验,大多数主机总是返回200 OK。即使找不到页面/文件,许多网站也总是返回200 OK。

有些主机将HTTP重定向返回到“找不到文件”页面,因此您可以使用它(您的新网址将包含文件“filenotfound”。

但我认为最通用的方法是在响应主体中查找某些文本。这意味着您很可能会为每个主机寻找不同的文本,但我真的没有看到任何其他方式。

希望它有所帮助! : - )