tags:

views:

844

answers:

1

Hello, 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.

Any help would be appreciated, thanks!

+1  A: 

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);
}
Darin Dimitrov
It worked!! Thanks a lot.I don't see exactly why it bypasses the cookie problem tho. Thanks again!
Jon Quimon