2016-07-26 2 views
0

В принципе, у меня нет опыта загрузки веб-страницы, и я пытаюсь получить эту страницу, которая имеет ежедневные биржевые цены без везения. Я не уверен, что это я делаю что-то неправильно здесь или если веб-сервер запрещает подобные запросы. Сайт работает с хром или IE.Проблема с загрузкой данных с веб-сайта

   using (WebClient client = new WebClient()) 
      { 

       byte[] response = client.DownloadData("http://limun.hr/main.aspx?id=18"); 
       string result = System.Text.Encoding.UTF8.GetString(response); 
      } 

Любая помощь будет принята с благодарностью.

Редактировать: Я забыл включить то, что не так. Возвращенная строка содержит только один символ - @.

+1

Попробуйте уточнить. Что именно не работает для вас. Что вы получаете и что вы ожидали получить вместо этого –

+0

Не работает ли это? –

+0

Извините, забыли включить ошибку. – Nezreli

ответ

1

Некоторые веб-сайты просматривают строку UserAgent в заголовках HTTP, чтобы узнать, является ли вызывающий объект фактическим веб-браузером. Если вы используете класс HttpWebRequest, у вас есть больше контроля над вызовом и может подменять строку UserAgent для имитации реального веб-браузера. Попробуйте что-то вроде следующего, чтобы сделать его работу:

HttpWebRequest request = WebRequest.Create("http://limun.hr/main.aspx?id=18") as HttpWebRequest; 
request.UserAgent = "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)"; 
WebResponse response = request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream();); 
string content = reader.ReadToEnd(); 
reader.Close(); 
response.Close(); 
Console.WriteLine(content); 
+0

Да. Вы прибили его. Спасибо. – Nezreli

1

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

 using (WebClient client = new WebClient()) 
     { 
      client.Headers.Add("user-agent", "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)"); 
      string res = client.DownloadString("http://limun.hr/main.aspx?id=18"); 
      Console.WriteLine(res); 
     } 

Примечание: WebClient также имеет DownloadStringTaskAsync метод, который вы можете найти полезным, в зависимости от ваших потребностей.

+0

Спасибо, это работает. – Nezreli

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