HttpWebRequest 保持session

 通过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();
        }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值