首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#POST请求登录网页,怎么保持登录状态啊代码如上

2013-03-21 
c#POST请求登录网页,如何保持登录状态啊,代码如下HttpHelper _httpstring _outCookie string.Emptypub

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 = null;
            try


            {
                webrequest = WebRequest.Create(webUrl) as HttpWebRequest;
                
                webrequest.ServicePoint.Expect100Continue = false;
                //是否使用 Nagle 不使用 提高效率
                webrequest.ServicePoint.UseNagleAlgorithm = false;
                //最大连接数
                webrequest.ServicePoint.ConnectionLimit = 65500;
                //数据是否缓冲 false 提高效率 
                webrequest.AllowWriteStreamBuffering = false;
                if (proxy!=null)
                {
                    model.proxy = proxy;
                    WebProxy myProxy = new WebProxy(proxy.ProxyInfo, false);
                    myProxy.Credentials = new NetworkCredential("", "");
                    webrequest.Proxy = myProxy;
                }
                else
                {
                    webrequest.Proxy = GlobalProxySelection.GetEmptyWebProxy();
                }
                //设置其他的herader
                webrequest =WebRequestSetHeaders(webrequest);
                if (!String.IsNullOrEmpty(refer))
                {
                    webrequest.Referer = refer;
                }
                else
                {
                    webrequest.Referer = webUrl;


                }
                webrequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                webrequest.CookieContainer = cookieContainer;
                webrequest.Timeout = 5000;
                webrequest.UserAgent = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
                webrequest.Accept = "*/*";
                webrequest.KeepAlive = true;
                webrequest.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");

                using (HttpWebResponse response = (HttpWebResponse)webrequest.GetResponse())
                {

                    if (response.ContentEncoding.ToLower().Contains("gzip"))
                    {
                        using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
                        {
                            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                            {

                                model.html = reader.ReadToEnd();
                            }
                        }
                    }
                    else if (response.ContentEncoding.ToLower().Contains("deflate"))
                    {
                        using (DeflateStream stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress))


                        {
                            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                            {

                                model.html = reader.ReadToEnd();
                            }

                        }
                    }
                    else
                    {
                        using (Stream stream = response.GetResponseStream())
                        {
                            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                            {

                                model.html = reader.ReadToEnd();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                model.exception = ex;
                model.html = string.Empty;

            }
            model.cookieContainer = cookieContainer;
            return model;
        }

引用:
引用:
为什么都要用cookie呢,CookieContainer 多好啊,你只要每次请求的是同一个CookieContainer多久可以保持登录了,并且支持序列化,持久化哦。~

求高手指教下具体要如何去实现这功能啊

热点排行