0

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

1 回答 1

2

这真的取决于主机。

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

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

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

希望能帮助到你!:-)

于 2012-09-10T07:16:54.597 回答