Як перевірити, чи URL url в C # - c #

Я хочу перевірити, чи є 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).