• 【转】HttpWebRequest 保持session


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

    1. public partial class RequestPage : System.Web.UI.Page  
    2.     {  
    3.         private static CookieContainer m_Cookie = new CookieContainer();  
    4.         private string m_Url = "http://localhost/HttpRequestTest/SessionPage.aspx";  
    5.         protected void Page_Load(object sender, EventArgs e)  
    6.         {  
    7.             string content = GetPageContent();  
    8.             //string content = GetPageContent(m_Url);  
    9.             Label1.Text = content;  
    10.         }  
    11.   
    12.         /// <summary>  
    13.         /// 获取页面内容,保存CookieHeader  
    14.         /// </summary>  
    15.         /// <returns></returns>  
    16.         private string GetPageContent()  
    17.         {  
    18.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_Url);  
    19.             request.CookieContainer = m_Cookie;  
    20.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
    21.             string cookieheader = request.CookieContainer.GetCookieHeader(new Uri(m_Url));  
    22.             m_Cookie.SetCookies(new Uri(m_Url), cookieheader);  
    23.   
    24.             Stream stream = response.GetResponseStream();  
    25.             StreamReader reader = new StreamReader(stream);  
    26.             string result = reader.ReadToEnd();  
    27.   
    28.             stream.Close();  
    29.             reader.Close();  
    30.             response.Close();  
    31.   
    32.             return result;  
    33.         }  
    34.   
    35.         /// <summary>  
    36.         /// 获取页面内容,存储CookieContainer  
    37.         /// </summary>  
    38.         /// <param name="url">被请求页面的url</param>  
    39.         /// <returns>返回页面内容</returns>  
    40.         public string GetPageContent(string url)  
    41.         {  
    42.             StringBuilder result = new StringBuilder("");  
    43.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); ;  
    44.             HttpWebResponse reponse = null;  
    45.             try  
    46.             {  
    47.                 request.CookieContainer = m_Cookie;  
    48.                 reponse = (HttpWebResponse)request.GetResponse();  
    49.                 m_Cookie = request.CookieContainer;  
    50.                 Stream rspStream = reponse.GetResponseStream();  
    51.                 StreamReader sr = new StreamReader(rspStream, System.Text.Encoding.Default);  
    52.   
    53.                 //获取数据  
    54.                 Char[] read = new Char[256];  
    55.                 int count = sr.Read(read, 0, 256);  
    56.                 while (count > 0)  
    57.                 {  
    58.                     result.Append(read, 0, count);  
    59.                     count = sr.Read(read, 0, 256);  
    60.                 }  
    61.             }  
    62.             catch (Exception e)  
    63.             {  
    64.                 result.Append(e.Message);  
    65.             }  
    66.             finally  
    67.             {  
    68.                 if (reponse != null)  
    69.                 {  
    70.                     reponse.Close();  
    71.                 }  
    72.             }  
    73.             return result.ToString();  
    74.         }  
    75.     }  
  • 相关阅读:
    跨平台开发得力助手
    一分钟将你的WPF应用程序变身成炫彩动态Metro风格
    因.Net Target Framework导致的编译错误
    WCF笔记
    WCF元数据发布的2种方式:httpGetEnabled与mex
    使用ClickOnce发布应用程序
    TFS笔记
    升级镁光M4固态硬盘的固件
    Android调用RESTful WCF服务
    用原生的android SDK与PhoneGap分别做了个示例,发现PhoneGap的要慢得多
  • 原文地址:https://www.cnblogs.com/SALIN/p/3269983.html
Copyright © 2020-2023  润新知