HttpWebRequest i pobieranie pliku

0

Witam,

Muszę się zwrócić o pomoc, ponieważ nie wychodzi mi pobieranie pliku z serwisu turbobit.net z konta premium.
Najpierw trzeba się zalogować jako użytkownik konta premium i to już mam zrobione.

    //GET
            CookieContainer cookies = new CookieContainer();

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://turbobit.net/");
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1";
            request.Method = "GET";
            request.CookieContainer = cookies;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            response.Close();

            //POST
            request = (HttpWebRequest)HttpWebRequest.Create("http://turbobit.net/login");
            request.Method = "POST";
            request.CookieContainer = cookies;
            string login = "";
            string password = "";
            string loginData = String.Format("user%5Blogin%5D=uzytkownik&user%5Bpass%5D=haslo&user%5Bsubmit%5D=Zaloguj+si%C4%99");
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] loginDataBytes = Encoding.ASCII.GetBytes(loginData);
            Stream postData = request.GetRequestStream();
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
            postData.Close();
            response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            webBrowser1.Navigate("http://turbobit.net/user/login", "", loginDataBytes, "Content-Type:application/x-www-form-urlencoded");
            stream.Close();
            response.Close();

Tutaj jest przykładowy kod do pobierania, który pobiera tylko zawartość strony (źródło) a nie plik

  HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create("http://turbobit.net/fnij316998t6.html");
            request2.CookieContainer = cookies;
            request2.Method = "GET";
            request2.KeepAlive = true;
            request2.AllowAutoRedirect = true;
            response = (HttpWebResponse)request2.GetResponse();


            response.Cookies = request2.CookieContainer.GetCookies(request2.RequestUri);
           
            var buffer = new byte[256];
            const int Length = 256;
           
            var readStream = response.GetResponseStream();
            int bytesRead = readStream.Read(buffer, 0, Length);
            var writeStream = new FileStream("C:\\turbbit.txt", FileMode.Create, FileAccess.ReadWrite);
   
           while (bytesRead > 0)
           {

                writeStream.Write(buffer, 0, bytesRead);
               
            }
           readStream.Close();
            writeStream.Close();

        }

Mam nadzieję, że znajdzie się jakaś osoba, która mi pomoże z tym :)

Pozdrawiam

0

chcesz pobrać stronę, to i dostajesz stronę:

HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create("http://turbobit.net/fnij316998t6.html");

kodu poniżej można się przestraszyć :-) zrobiłeś nieskończoną pętlę zapisującą dane:

           while (bytesRead > 0)
           {
                 writeStream.Write(buffer, 0, bytesRead);
            }

nie znam serwisu turbobit, ale jeśli działa tak jak większość innych serwisów tego typu, to na stronce, którą ściągnąłeś będzie podany link do docelowego pliku. stronę trzeba ściągnąć do końca i sparsować w poszukiwaniu linku do docelowego pliku i dopiero stamtąd zassać całość. koniecznie popraw kod ściągający pliki, najlepiej wydziel go do osobnej metody.

[edit]
na stronce dla niezalogowanych jest captcha. jeśli na stronie dla użytkowników premium jest również captcha, to raczej nie dasz rady tego zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1