我正在尝试使用C#登录hotfile.com.第一个大问题是克服417错误,这条线解决了它:
System.Net.ServicePointManager.Expect100Continue = false;
You don’t seem to accept cookies. Cookies are required in order to log in. Help
我已经尝试了几次,并且用Google搜索,我仍然无法登录Hotfile.com ..我的代码是这样的:
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,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);
当然,用户和通行证将拥有您的帐户值.
解决方法
这是我为您写的一个工作示例:
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); }