#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)