当前位置:首页>网络学院>程序开发>ASP.NET教程>文章内容

ASP.NET提交表单并保持Session和Cookie实现源代码

[ 来源:http://www.it55.com | 作者:大豆男生 | 时间:2007-10-15 | 收藏 | 推荐 ] 【

本实例通过asp.net模拟登陆并且保存Session和Cookie,成功登陆后台。主要使用HttpWebRequest、HttpWebResponse对象来实现表单提交并保持Session 和 Cookie的。本文所有源代码:AutoPostWithCookies.rar

这里涉及到3个页面:MyLogin.aspx,LoginOK.htm,Default.aspx:
1)MyLogin.aspx 页面

MyLogin.aspx 页面是登录页面,如果用户名和密码正确会生成 Session 和 Cookie(LoginSession、LoginCookie),然后转向 LoginOK.htm 页面。

2)LoginOK.htm 页面

LoginOK.htm 页面是一个跳转页面,几秒钟后会自动跳转到 Default.aspx 页面。

3)Default.aspx 页面

Default.aspx 页面是主界面,打开主界面时会判断 LoginSession 和 LoginCookie 的值是否正确,并把 Session 和 Cookie 的值显示出来。

提交ASP.NET表单(即完成自动登录)的代码如下:

    try
    {
        CookieContainer cookieContainer = new CookieContainer();

        ///////////////////////////////////////////////////
        // 1. 打开 MyLogin.aspx 页面,获得 GetVeiwState & EventValidation
        ///////////////////////////////////////////////////               
        // 设置打开页面的参数
        string URI = "http://localhost:1165/WebTest/MyLogin.aspx";
        HttpWebRequest request = WebRequest.Create(URI) as HttpWebRequest;
        request.Method = "GET";
        request.KeepAlive = false;

        // 接收返回的页面
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        System.IO.Stream responseStream = response.GetResponseStream();
        System.IO.StreamReader reader = new System.IO.StreamReader(responseStream,Encoding.UTF8);
        string srcString = reader.ReadToEnd();

        // 获取页面的 VeiwState               
        string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
        int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
        int j = srcString.IndexOf("\"", i);
        string viewState = srcString.Substring(i, j - i);

        // 获取页面的 EventValidation               
        string eventValidationFlag = "id=\"__EVENTVALIDATION\" value=\"";
        i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
        j = srcString.IndexOf("\"", i);
        string eventValidation = srcString.Substring(i, j - i);

        ///////////////////////////////////////////////////
        // 2. 自动填充并提交 MyLogin.aspx 页面
        ///////////////////////////////////////////////////
        // 提交按钮的文本
        string submitButton = "登录";

        // 用户名和密码
        string userName = "1";
        string password = "1";

        // 将文本转换成 URL 编码字符串
        viewState = System.Web.HttpUtility.UrlEncode(viewState);
        eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
        submitButton = System.Web.HttpUtility.UrlEncode(submitButton);

        // 要提交的字符串数据。格式形如:user=uesr1&password=123

(编辑:IT资讯之家 www.it55.com

返回顶部
共2页: 上一页 1 [2] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]