如何在C#中检查youtube url

本文关键字:检查 youtube url | 更新日期: 2023-09-27 17:58:55

我想检查给定的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]

有人知道这样做的方法吗?

如何在C#中检查youtube url

您可以执行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错误等)。

                    bool isYoutube = false;
                    string host = new Uri(url).Host;
                    if (host == "youtube.com" || host == "youtu.be")
                    {
                        isYoutube = true;
                    }

首先,您可能需要检查youtube的主机名是什么(我只是假设它是http://youtube.com)但在你有了之后,下面的代码会做你想做的事情;

 using System.Net;
 IPHostEntry host = Dns.Resolve(theInputHostName);
 if (host.HostName == "http://youtube.com")
      // it resolves to youtube, do something.

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