我正在尝试使用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);
- }