我想检查给定的 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]
有谁知道这样做的方法?
我想检查给定的 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
/whatever 并检查响应,或者HttpWebRequest.AllowAutoRedirect
手动禁用并遍历所有重定向(检查状态代码,然后检查Location
HTTP标题)。