Облегченная альтернатива WebRequest «HEAD»

Недавно я обнаружил, что следующее не работает с некоторыми сайтами, такими как IMDB.com.

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                System.Net.WebRequest wc = System.Net.WebRequest.Create("http://www.imdb.com"); //args[0]);

                ((HttpWebRequest)wc).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19";
                wc.Timeout = 1000;
                wc.Method = "HEAD";
                WebResponse res = wc.GetResponse();
                var streamReader = new System.IO.StreamReader(res.GetResponseStream());

                Console.WriteLine(streamReader.ReadToEnd());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }

Он возвращает HTTP 405 (Метод Не допускается ). Моя проблема в том, что я использую код, очень похожий на приведенный выше, чтобы проверить, действительна ли ссылка, и в подавляющем большинстве случаев она работает правильно. Я могу переключить его на метод, равный GET, и он работает (с увеличением тайм-аута), но это замедляет работу на порядок. Я предполагаю, что ответ 405 - это конфигурация сервера на стороне сервера IMDB.

Есть ли способ сделать то же самое, что и выше, в упрощенной форме в .NET? Или, есть ли способ исправить приведенный выше код, чтобы он работал как запрос GET, работающий с imdb?

7
задан Serapth 18 March 2011 в 15:34
поделиться