Я хочу перевірити, чи є URL-адреса посиланням на http://youtube.com
.
Я знаю, що існує багато різних скорочених версій посилань (напр., http://youtu.be
), тому те, що я бачу, - це спосіб вирішити URL-адресу і перевірити, чи він закінчується http://youtube.com
.
Пара прикладів:
http://www.youtube.com/v/[videoid]
http://www.youtu.be/watch?v=[videoid]
Хто-небудь знає спосіб зробити це?
Відповіді:
2 для відповіді № 1Ви можете виконати a 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, тощо).
1 для відповіді № 2
Перш за все, вам доведеться перевірити, що ім'я хоста для youtube (я тільки припускаю, що це так http://youtube.com), але після того, як ви маєте, наступний код буде робити те, що ви хочете;
using System.Net;
IPHostEntry host = Dns.Resolve(theInputHostName);
if (host.HostName == "http://youtube.com")
// it resolves to youtube, do something.
0 для відповіді № 3
Якщо ви хочете дізнатися, чи дана URL перенаправляє (використовуючи коди стану 301
/302
) на URL-адресу YouTube можна використовувати WebClient
/HttWebRequest
/ будь-що безпосередньо і перевірити відповідь, або відключити HttpWebRequest.AllowAutoRedirect
і перетинати всі перенаправлення вручну (перевірка коду статусу, а потім Location
Заголовок HTTP).