2010-01-28 12 views
6

Ich versuche C# zu verwenden, um sich bei hotfile.com anzumelden. Das erste große Problem war die 417-Fehler zu überwinden, die diese Linie es gelöst:.NET HTTP POST-Methode - Cookies Problem

Nun, wie ich mir diesen Fehler versuchen, mit POST anmelden:

Sie scheinen nicht um Cookies zu akzeptieren. . Cookies sind erforderlich, um die Anmeldung Hilfe

ich mehrmals versucht haben, und googeln um, und ich kann immer noch nicht anmelden, um Hotfile.com .. Mein Code ist dies:

string response; 
byte[] buffer = Encoding.ASCII.GetBytes("user=XX&pass=XX"); 

CookieContainer cookies = new CookieContainer(); 
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://hotfile.com/login.php"); 
WebReq.Credentials = new NetworkCredential("XX", "XX"); 
WebReq.PreAuthenticate = true; 
WebReq.Pipelined = true; 
WebReq.CookieContainer = cookies; 
WebReq.KeepAlive = true; 
WebReq.Method = "POST"; 
WebReq.ContentType = "application/x-www-form-urlencoded"; 
WebReq.ContentLength = buffer.Length; 
WebReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1)"; 

Stream PostData = WebReq.GetRequestStream(); 
PostData.Write(buffer, 0, buffer.Length); 
PostData.Close(); 

HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); 
Stream Answer = WebResp.GetResponseStream(); 
StreamReader _Answer = new StreamReader(Answer); 
response = _Answer.ReadToEnd(); 
File.WriteAllText("dump.html", response); 

Natürlich würden der Benutzer und der Ausweis Ihre Kontowerte haben.

Antwort

9

Hier ist ein funktionierendes Beispiel ich für Sie schrieb:

var cookies = new CookieContainer(); 
ServicePointManager.Expect100Continue = false; 

var request = (HttpWebRequest)WebRequest.Create("http://www.hotfile.com/login.php"); 
request.CookieContainer = cookies; 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
using (var requestStream = request.GetRequestStream()) 
using (var writer = new StreamWriter(requestStream)) 
{ 
    writer.Write("user=XX&pass=XX&returnto=/"); 
} 

using (var responseStream = request.GetResponse().GetResponseStream()) 
using (var reader = new StreamReader(responseStream)) 
{ 
    var result = reader.ReadToEnd(); 
    Console.WriteLine(result); 
} 
+0

Es funktionierte !! Danke vielmals. Ich sehe nicht genau, warum es umgeht das Cookie-Problem tho. Danke noch einmal! –

+0

+1. Froh, dass Sie den Einsatz von IDisposable ebenfalls korrigiert haben! –