2016-01-07 2 views
2

Это мои строки кода для содержания ПОЛУЧИТЬ вебсайта:Невозможно получить содержание веб-сайта с C#

private string GetContent(string url) { 
    var request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "GET"; 
    var content = String.Empty; 
    HttpStatusCode statusCode; 
    using (var response = request.GetResponse()) 
     using (var stream = response.GetResponseStream()) 
     { 
      var contentType = response.ContentType; 
      Encoding encoding = null; 
      if (contentType != null) 
      { 
       var match = Regex.Match(contentType, @"(?<=charset\=).*"); 
       if (match.Success) 
        encoding = Encoding.GetEncoding(match.ToString()); 
      } 

      encoding = encoding ?? Encoding.UTF8; 

      statusCode = ((HttpWebResponse)response).StatusCode; 
      using (var reader = new StreamReader(stream, encoding)) 
       content = reader.ReadToEnd(); 
     } 
    return content; 
} 

Я попытался запустить эти строки кода со ссылкой: http://google.com. И все сделано. Но когда я бегу со ссылкой: http://batdongsan.com.vn/. Он не работает и показывает «извините, что-то пошло не так». И я не знаю, почему с этим случилось. Как я могу получить содержание второй ссылки?

ответ

3

Похоже, что сайт проверяет заголовок User-Agent, и поскольку он не установлен по умолчанию, он возвращает сообщение об ошибке. Я добавил, что мой браузер отправил и смог получить содержимое этой ссылки. Просто добавьте строку, которая устанавливает UserAgent, как показано ниже:

// ... 
var request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "GET"; 
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"; 

var content = String.Empty; 
HttpStatusCode statusCode; 
// ... 
+2

Избиение - я как раз собирался опубликовать этот точный ответ! – Sam

+1

@Sam: :-) Был там, я знаю, что он чувствует –

+1

Я просто изучал, как они могут проверять информацию о пользователе-агенте, но вы были первыми. Отличный ответ. – Alex

Смежные вопросы