日期:2014-05-17  浏览次数:21029 次

c#POST请求登录网页,如何保持登录状态啊,代码如下
        HttpHelper _http;
        string _outCookie = string.Empty;
        public Form1()
        {
            InitializeComponent();
            _http = new HttpHelper(Encoding.UTF8);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string postdata = "username=zheng8895&password=123321&keep_login=on&forward=http%3A%2F%2Fs1.sg2.ledu.com";
            string url = "http://pass.ledu.com/user/login";
            string refurl = "http://pass.ledu.com/user/login?forward=http%3A%2F%2Fs1.sg2.ledu.com&";
            string data = _http.PostData(url, refurl, postdata, ref _outCookie);
            richTextBox1.AppendText(data);
        }




还有一个POST的类没贴出来,太长 了











------解决方案--------------------

 Cookie[] cookies = null;
            if (HttpContext.Current.Session["ResponseSessionID"] != null)
            {
                cookies = new Cookie[1];
                cookies[0] = new Cookie("ASP.NET_SessionId", HttpContext.Current.Session["ResponseSessionID"].ToString());
            }

------解决方案--------------------
这个是我用的方法,传进去了一个CookieContainer ,默认可以null,你请求后,登录成功了,方法返回CookieContainer  这个你留着就可以了,下次 再用这个去,就是登录状态了,关于持久化,你看下序列化就知道了哦。


  /// <summary>
        /// Get 方式 获取数据
        /// </summary>
        /// <param name="webUrl"></param>
        /// <returns></returns>
        public Model.WebRequestReturnModel WebRequestGetHtmlByGet(string webUrl, CookieContainer cookieContainer, Encoding encoding, string refer,Model.Proxy proxy)
        {
            Model.WebRequestReturnModel model = new Model.WebRequestReturnModel();
            HttpWebRequest webrequest =