【问题标题】:.NET HTTP POST Method - Cookies issue.NET HTTP POST 方法 - Cookie 问题
【发布时间】:2010-01-28 00:58:51
【问题描述】:

我正在尝试使用 C# 登录到 hotfile.com。第一个大问题是克服 417 错误,这一行解决了它:

System.Net.ServicePointManager.Expect100Continue = false;

现在我在尝试使用 POST 登录时遇到此错误:

您似乎不接受 cookie。需要 Cookie 才能登录。帮助

我已经尝试了好几次,然后用谷歌搜索了一遍,我仍然无法登录到 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, 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);

当然,用户和通行证将具有您的帐户值。

【问题讨论】:

    标签: c# http post


    【解决方案1】:

    这是我为你写的一个工作示例:

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

    【讨论】:

    • 成功了!!非常感谢。我不明白为什么它会绕过 cookie 问题。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多