Premium Download von uploaded.net

07/02/2015 13:56 Yothri#1
Hallo zusammen,

ich versuche gerade mit einer kleinen C# Anwendung eine Datei von uploaded.net mit meinem Premium Account herunterzuladen. Arbeiten tue ich hier mit HttpWebRequests / Responses.

Ich dachte, das speichern des Cookie Containers beim einloggen und das anschließende anfügen beim nächsten Request für den Download reicht aus um den Premium Download Link zu bekommen, doch vergeblich bekomme ich da nur das HTML Gerüst für die Standard Download Variante zurück.

Meine Klasse dafür sieht aktuell folgendermaßen aus:

Code:
public class uploaded
    {

        public delegate void DLoginResult(JObject loginResult);
        public event DLoginResult OnLoginResult;

        private CookieContainer cookieContainer { get; set; }

        public uploaded()
        {
            this.cookieContainer = new CookieContainer();
        }

        public void login(string id, string password)
        {
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://uploaded.net/io/login");
            webRequest.Method = "POST";
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.CookieContainer = this.cookieContainer;

            // Pass credentials.
            byte[] bCredentials = Encoding.UTF8.GetBytes("id=" + id + "&pw=" + password);
            webRequest.ContentLength = bCredentials.Length;

            // Write credentials into stream.
            using(Stream requestStream = webRequest.GetRequestStream())
            {
                requestStream.Write(bCredentials, 0, bCredentials.Length);
            }

            // Await server response.
            using(WebResponse webResponse = webRequest.GetResponse())
            {
                using(StreamReader responseReader = new StreamReader(webResponse.GetResponseStream()))
                {
                    string loginResult = responseReader.ReadToEnd();
                    if(string.IsNullOrEmpty(loginResult))
                    {
                        if(this.OnLoginResult != null)
                            this.OnLoginResult(JObject.Parse("{\"success\":\"true\"}"));
                    }
                    else
                    {
                        if (this.OnLoginResult != null)
                            this.OnLoginResult(JObject.Parse(loginResult));
                    }
                }
            }
        }

        public void downloadFile(string url)
        {
            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
            webRequest.CookieContainer = this.cookieContainer;
            webRequest.ContentType = "application/x-www-form-urlencoded";
            
            using(WebResponse webResponse = webRequest.GetResponse())
            {
                using (Stream responseStream = webResponse.GetResponseStream())
                {
                    byte[] buffer = new byte[1024];
                    using (FileStream fStream = new FileStream("C:\\Users\\Yothri\\Desktop\\test.html", FileMode.Create))
                    {
                        while (true)
                        {
                            int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                            if (bytesRead > 0)
                                fStream.Write(buffer, 0, bytesRead);
                            else
                                break;
                        }
                    }
                }
            }
        }

    }
Ich hoffe mir kann jemand helfen denn ich weiß nicht was genau das Problem ist.

PS: Meine C# Kenntnisse sind sehr gut, ich kenne mich nur leider mit dem HTTP Protokoll nicht so gut aus. Wer noch original Header Request und Response braucht, soll Bescheid sagen dann trage ich das noch nach.

Ich danke Euch im Voraus
07/06/2015 13:07 ƬheGame#2
Du musst die cookies einer session in der du eingeloggt bist speichern (eventuell das objekt serializen und in ein cookie file speichern) um die cookies vor dem downloaden zu setzen. Da cookies aber nur eine gewisse zeit gültig sind, dürftest du immer wider probleme bekommen.
07/06/2015 17:25 Ludder231#3
Hab das immer so gemacht, wenn ich was mit http zu tun hatte.


Musst aber bei AllowAutoDirect aufpassen...
07/14/2015 11:59 Yothri#4
Quote:
Originally Posted by Ludder231 View Post
Hab das immer so gemacht, wenn ich was mit http zu tun hatte.


Musst aber bei AllowAutoDirect aufpassen...

Danke für die Snippets, ich werde, wenn ich ausm Urlaub zurück bin mal auf mein Projekt anpassen und ausprobieren obs dann iwie klappt.

Danke im Voraus
07/16/2015 14:39 Ludder231#5
Quote:
Originally Posted by Yothri View Post
Danke für die Snippets, ich werde, wenn ich ausm Urlaub zurück bin mal auf mein Projekt anpassen und ausprobieren obs dann iwie klappt.

Danke im Voraus
Evtl. liegts ja auch das du deine ID und PW über die Credentials sendest und nicht um Post...