2010-01-28 17 views
6

Estoy intentando usar C# para iniciar sesión en hotfile.com. El primer gran problema fue superar el error 417, el cual esta línea resolvió:.NET HTTP POST Method - Número de cookies

Ahora estoy recibiendo este error cuando trato de iniciar la sesión utilizando POST:

No pareces para aceptar cookies . Las cookies son necesarias para iniciar su sesión en la Ayuda

He intentado varias veces, y googled alrededor y todavía no pueden acceder a Hotfile.com .. Mi código es la siguiente:

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, el usuario y el pase tendrían los valores de sus cuentas.

Respuesta

9

Aquí está un ejemplo de trabajo que escribí para ti:

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

Funcionó !! Muchas gracias. No veo exactamente por qué elude el problema de las cookies aunque. ¡Gracias de nuevo! –

+0

+1. ¡Me alegro de que hayas corregido el uso de IDisposable también! –