2010-01-28 11 views
6

Sto tentando di utilizzare C# per accedere a hotfile.com. Il primo grande problema è stato quello di superare la 417 Errore, che questa linea risolto:Metodo HTTP HTTP POST - Problemi relativi ai cookie

Ora sto ricevendo questo errore mentre cerco di login utilizzando POST:

Non sembri accettare i cookie. . I cookie sono necessari al fine di Accedi

Ho provato diverse volte, e su Google in giro e io ancora non possono accedere per Hotfile.com .. Il mio codice è questo:

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

Naturalmente, l'utente e il passaggio avrebbero i valori dei tuoi account.

risposta

9

Ecco un esempio di lavoro che ho scritto per te:

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

Ha funzionato !! Molte grazie. Non vedo esattamente perché ignori il problema dei cookie. Grazie ancora! –

+0

+1. Sono contento che tu abbia corretto anche l'uso di IDisposable! –