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;
}
}
}
}
}
}
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






