0

我想检查给定的 URL a 是否链接到http://youtube.com.

我知道有很多各种缩短版本的链接(例如http://youtu.be),所以我所追求的是一种解析 URL 并查看它是否以http://youtube.com.

几个示例输入是:

http://www.youtube.com/v/[videoid]
http://www.youtu.be/watch?v=[videoid]

有谁知道这样做的方法?

4

4 回答 4

3

您可以执行HEAD请求:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.youtu.be/Ddn4MGaS3N4");
request.Method = "HEAD";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
    Console.WriteLine("Does this resolve to youtube?: {0}", response.ResponseUri.ToString().Contains("youtube.com") ? "Yes" : "No");
}

似乎工作正常。不确定边缘情况,但似乎可以完成这项工作。

注意:这里没有错误检查,例如 404 错误等)。

于 2013-02-12T01:09:17.543 回答
2
                    bool isYoutube = false;

                    string host = new Uri(url).Host;
                    if (host == "youtube.com" || host == "youtu.be")
                    {
                        isYoutube = true;
                    }
于 2018-10-20T19:31:28.820 回答
1

首先,您可能必须检查 youtube 的主机名是什么(我只是假设它是http://youtube.com),但是在您拥有之后,以下代码将满足您的要求;

 using System.Net;

 IPHostEntry host = Dns.Resolve(theInputHostName);
 if (host.HostName == "http://youtube.com")
      // it resolves to youtube, do something.
于 2013-02-12T01:04:58.700 回答
0

如果您想知道给定的 URL 是否重定向(使用状态代码301/ 302)到 YouTube URL,您可以直接使用WebClient/ HttWebRequest/whatever 并检查响应,或者HttpWebRequest.AllowAutoRedirect手动禁用并遍历所有重定向(检查状态代码,然后检查LocationHTTP标题)。

于 2013-02-12T01:10:08.680 回答