【问题标题】:Cookies don't seem to be used in HttpWebRequestHttpWebRequest 中似乎没有使用 Cookie
【发布时间】:2012-11-04 12:04:59
【问题描述】:

在我的问题Can't login with HttpWebRequests 之后,我成功登录。我得到了显示“感谢您登录”的页面,但之后我似乎没有登录。

对我来说,这看起来像是一个 cookie 问题。在萤火虫中,cookie 似乎是 HttpOnly 这可能是个问题吗?如何让HttpWebRequest 使用 cookie?

这是我用来登录的代码:

string url = "http://www.warriorforum.com/login.php?do=login";

var bytes = Encoding.Default.GetBytes(@"vb_login_username=USERNAME&cookieuser=1&vb_login_password=&s=&securitytoken=guest&do=login&vb_login_md5password=d9350bad28eee253951d7c5211e50179&vb_login_md5password_utf=d9350bad28eee253951d7c5211e50179");
var container = new CookieContainer();

var request = (HttpWebRequest)(WebRequest.Create(url));
request.CookieContainer = container;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.KeepAlive = true;
request.AllowAutoRedirect = true;
request.AllowWriteStreamBuffering = true;
request.CookieContainer = container;
using (var requestStream = request.GetRequestStream())
    requestStream.Write(bytes, 0, bytes.Length);

var requestResponse = request.GetResponse();
using (var responsStream = requestResponse.GetResponseStream())
    if (responsStream != null)
    {
        using (var responseReader = new StreamReader(responsStream))
        {
            var responseStreamReader = responseReader.ReadToEnd();
            richTextBox1.Text = responseStreamReader; //this is to read the page source after the request
      }
    }
}

【问题讨论】:

    标签: c# cookies httpwebrequest


    【解决方案1】:

    HttpWebRequest.CookieContainer 的手册页说:

    CookieContainer 属性提供 CookieContainer 类的实例,该类包含与此请求关联的 cookie。

    你这样做:

    var container = new CookieContainer();
    

    因此,对于每个请求,您都从一个不带任何 cookie 的新 CookieContainer 开始。将container 设为类成员,并且只实例化一次。

    【讨论】:

    • 天哪,太感谢你了,一个小时以来我一直在努力解决一个多么愚蠢的错误
    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 2016-03-03
    相关资源
    最近更新 更多