0

次のコードは、rapidshare、extabit、turbobit などのファイル ホスティング サービスからのリンクの可用性を確認することを目的としています。以下に記述したコードは、リンクが実際には有効であるため、常に HttpStatusCode "OK" を返しますが、リンク内のファイルが利用できないか、ファイルがありません。サービスによって提供される API を使用せずに、必要なものを確認する方法はありますか?

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 を返します。ページやファイルが見つからなくても、多くの Web サイトは常に 200 OK を返します。

一部のホスティング事業者は、「ファイルが見つかりません」ページへの HTTP リダイレクトを返すため、それを使用できます (新しい URL には「filenotfound」というテキストが含まれます。

しかし、最も一般的な方法は、応答本文で特定のテキストを探すことだと思います。つまり、ホストごとに異なるテキストを探す可能性が高いということですが、それ以外の方法は見当たりません。

それが役に立てば幸い!:-)

于 2012-09-10T07:16:54.597 に答える