HttpWebRequest 保持session

来源:互联网 发布:淘宝纯棉四件套店铺 编辑:程序博客网 时间:2024/05/16 08:18

 通过HttpWebRequest获取网页内容并保持session,最主要的就是存储cookie。这里使用了一个静态变量m_Cookie用来存储cookie的内容。第二次请求网页的时候把cookie传送过去,这样就可以保持session。

 

public partial class RequestPage : System.Web.UI.Page    {        private static CookieContainer m_Cookie = new CookieContainer();        private string m_Url = "http://localhost/HttpRequestTest/SessionPage.aspx";        protected void Page_Load(object sender, EventArgs e)        {            string content = GetPageContent();            //string content = GetPageContent(m_Url);            Label1.Text = content;        }        /// <summary>        /// 获取页面内容,保存CookieHeader        /// </summary>        /// <returns></returns>        private string GetPageContent()        {            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Url);            request.CookieContainer = m_Cookie;            HttpWebResponse response = (HttpWebResponse)request.GetResponse();            string cookieheader = request.CookieContainer.GetCookieHeader(new Uri(m_Url));            m_Cookie.SetCookies(new Uri(m_Url), cookieheader);            Stream stream = response.GetResponseStream();            StreamReader reader = new StreamReader(stream);            string result = reader.ReadToEnd();            stream.Close();            reader.Close();            response.Close();            return result;        }        /// <summary>        /// 获取页面内容,存储CookieContainer        /// </summary>        /// <param name="url">被请求页面的url</param>        /// <returns>返回页面内容</returns>        public string GetPageContent(string url)        {            StringBuilder result = new StringBuilder("");            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); ;            HttpWebResponse reponse = null;            try            {                request.CookieContainer = m_Cookie;                reponse = (HttpWebResponse)request.GetResponse();                m_Cookie = request.CookieContainer;                Stream rspStream = reponse.GetResponseStream();                StreamReader sr = new StreamReader(rspStream, System.Text.Encoding.Default);                //获取数据                Char[] read = new Char[256];                int count = sr.Read(read, 0, 256);                while (count > 0)                {                    result.Append(read, 0, count);                    count = sr.Read(read, 0, 256);                }            }            catch (Exception e)            {                result.Append(e.Message);            }            finally            {                if (reponse != null)                {                    reponse.Close();                }            }            return result.ToString();        }    }


原创粉丝点击