GET запрос для скачивания трека - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Недавно начал изучать C#. Решил написать маленькую прогу для скачивания трека(а потом и всех треков на странице) с этого сайта vmuzike.net(не реклама). Вроде бы все просто: ищем в ХТМЛ коде ссылку на трек и качаем. Но сайт выдает ссылку только ответом на GET запрос. Хромом отловил сам запрос и ответ. Ссылка лежит в заголовке Location. Т.е. задача сводится к: отправить ГЕТ-запрос, получить ответ и по значению заголовка Location скачать файл. Однако нужный ответ не приходит. Сам код:
Листинг программы
  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. CookieContainer cc = new CookieContainer();
  4. HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Url); //Url = ссылка на любую песню. [url]http://vmuzike.net/download/105492[/url], например.
  5. req.CookieContainer = cc;
  6. req.AllowAutoRedirect = false;
  7. req.UserAgent = "Chrome/39.0.2171.65";
  8. req.Referer = "http://vmuzike.net/";
  9. req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  10. req.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  11. req.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
  12. HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  13. string path = resp.Headers["Location"];
  14. textBox3.Text = path;
  15. resp.Close();
  16. }
В чем может быть проблема? Может быть я не так составил запрос? Отловленный ГЕТ запрос:
GET /download/105492 HTTP/1.1 Host: vmuzike.net Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Referer: http://vmuzike.net/search/a%20day%20to%20remember Accept-Encoding: gzip, deflate, sdch Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: _scd=3d56cbd4b2ca5791dbc4833f4ca5cac6; PHPSESSID=maglc19o6ki1mt8qmqgfjvfqf3; _ukey=56e863e53ae37696a15d1db01259f7dc; _ga=GA1.2.1137599438.1416749029; _gat=1; player_volume=100; _ym_visorc_7892233=b
и ответ:
HTTP/1.1 302 Found Server: nginx/1.6.0 Date: Thu, 27 Nov 2014 15:45:46 GMT Content-Type: text/html Content-Length: 0 Connection: keep-alive X-Powered-By: PHP/5.5.9-1ubuntu4.5 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: http://n2.vmuzike.net/b/2a4be9796fff...MzI0MjM3MH0%3D

Решение задачи: «GET запрос для скачивания трека»

textual
Листинг программы
  1.  private void button2_Click(object sender, EventArgs e)
  2.         {
  3.             HttpWebRequest reqCookie = (HttpWebRequest)HttpWebRequest.Create(Url);  // Запрос
  4.             reqCookie.CookieContainer = new CookieContainer();                     // на
  5.             HttpWebResponse respCookie = (HttpWebResponse)reqCookie.GetResponse();// получение
  6.             respCookie.Close();                                                  //куки
  7.            
  8.             string cookie = Convert.ToString(respCookie.Cookies[1]); //1 - индекс именно того кука, который нужен
  9.  
  10.             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Url); // Сам запрос
  11.             req.Headers.Add("Cookie", cookie); //с куками
  12.             req.AllowAutoRedirect = false;
  13.  
  14.             HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  15.             resp.Close();
  16.             string path = resp.Headers["Location"];
  17.             Uri url = new Uri(path);
  18.             using (WebClient client = new WebClient())
  19.             {
  20.                 client.DownloadFileAsync(url, "C:\\Users\\PC\\Desktop\\song.mp3");
  21.             }
  22.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут