Почему этот веб-запрос вызывает sony.com генерирует исключение?

#c# #.net #httpwebrequest #webrequest

#c# #.net #httpwebrequest #веб-запрос

Вопрос:

Моя цель — написать метод C #, который проверяет, указывает ли URL на действительный онлайн-ресурс. В настоящее время это выглядит примерно так:

 string url = "http://www.sony.com/";
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
   var msg = response.StatusCode == HttpStatusCode.OK ? "OK" : "Dead Link";
   Console.WriteLine(msg);
}
  

Этот код генерирует исключение, хотя я могу перейти к URL-адресу sony в веб-браузере. Сначала я подумал, что их веб-сервер не поддерживает HEAD. Не уверен, что некоторые этого не делают? Но он все равно генерирует исключение с помощью GET . Есть предложения, как лучше написать этот код для обработки подобных случаев?

Комментарии:

1. Какое исключение генерируется?

2. System.Net.WebException: Запрос был прерван: время ожидания операции истекло. Извините, я должен был опубликовать это.

Ответ №1:

Для этого сайта требуется User-Agent заголовок. Добавьте эту строку:

 request.UserAgent = "SO/1.0";
  

Комментарии:

1. @user3766657 Пометьте этот ответ как принятый, если он решил проблему: P

2. Да, просто пришлось подождать 5 минут, прежде чем это позволит мне.

3. Могу ли я узнать, что это за пользовательский агент? Спасибо

4. @Alex ИТАК (Stackoverflow) 🙂 Короче, чем: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)