如何在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]
有人知道这样做的方法吗?
您可以执行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标头)。