.NET HTTP POST Method - Cookies issue

12,200

Here's a working example I wrote for you:

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);
}
Share:
12,200
Admin
Author by

Admin

Updated on June 11, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm trying to use C# to login to hotfile.com. The first big issue was to overcome the 417 Error, which this line solved it:

    System.Net.ServicePointManager.Expect100Continue = false;
    

    Now I'm getting this error as I try to login using POST:

    You don't seem to accept cookies. Cookies are required in order to log in. Help

    I've tried several times, and googled around and I still can't login to Hotfile.com.. My code is this:

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

    Naturally, the user and pass would have your accounts values.