Winform和webserver之间sessionID的使用!

最近公司布置的一个任务需要用到session,通过一天的折磨终于理解了这个调用机制,下面是我一段webserver和winform使用:
我分享下我几个误区:
1.sessionId可以获取session对象?
   我刚开始以为这是可行的,其实是不可以的,这个要从机制说起。
2.sessionId是什么?
其实是服务器返回给浏览器的用来代表身份,每当用户登录成功,服务器返回一个sessionID,浏览器自动把sessionid放到cookie中,并加入每次http 请求的表头中。在我的这个任务中是在winfrom中把sessionid放到cookie中,并加入每次http 请求的表头中。最后服务器会验证sessionid是否匹配,并给出响应的权限。
下面我简单的介绍下我的完成:
webserver:

            Stream inputStream = HttpContext.Current.Request.InputStream;
            StreamReader reader = new StreamReader(inputStream, System.Text.Encoding.Unicode);
            string responseContent = reader.ReadToEnd();
            if (Session["UserName"]!=null)
            {
                responseContent = Session["UserName"].ToString(); 
            }
            else
            {
                Session["UserName"] = responseContent;
                responseContent = Session.SessionID;
            }
            Response.ContentType = "text/plain";
            Response.Write(responseContent);
winform:
 private void button1_Click(object sender, EventArgs e)
        {
                string strUrl = "http://localhost:3305/Default.aspx";
                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(strUrl);
                myReq.Method = "post";
                CookieContainer cookies= new CookieContainer();
                UnicodeEncoding encoding = new UnicodeEncoding();
                string s4 = textBox1.Text;
                byte[] byte1 = encoding.GetBytes(s4);
                myReq.ContentType = "application/x-www-form-urlencoded";
                myReq.ReadWriteTimeout = 1000;
                myReq.ContentLength = byte1.Length;
                Stream newStream = myReq.GetRequestStream();
                newStream.Write(byte1, 0, byte1.Length);
                newStream.Close();
                HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse();
                Stream streamReq = myRes.GetResponseStream();
                StreamReader reader = new StreamReader(streamReq, System.Text.Encoding.UTF8);
                string s = reader.ReadToEnd();
                textBox1.Text = s;
                streamReq.Close();
                reader.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {   
                string strUrl = "http://localhost:3305/Default.aspx";
                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(strUrl);
                myReq.Method = "post";
                CookieContainer cookies = new CookieContainer();
                myReq.CookieContainer = cookies;
                Cookie appCookie = new Cookie("ASP.NET_SessionId", textBox1.Text);//注意ASP.NET验证sessionID的名:ASP.NET_SessionId
                myReq.CookieContainer.Add(new Uri(strUrl),appCookie);
                UnicodeEncoding encoding = new UnicodeEncoding();
                byte[] byte1 = encoding.GetBytes("ccc");
                myReq.ContentType = "application/x-www-form-urlencoded";
                myReq.ReadWriteTimeout = 1000;
                myReq.ContentLength = byte1.Length;
                Stream newStream = myReq.GetRequestStream();
                newStream.Write(byte1, 0, byte1.Length);
                newStream.Close();
                HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse();
                Stream streamReq = myRes.GetResponseStream();
                StreamReader reader = new StreamReader(streamReq, System.Text.Encoding.UTF8);
                string s = reader.ReadToEnd();
                streamReq.Close();
                reader.Close();
                MessageBox.Show(s);
            }
在textbox中输入:chp,点击button1,textbox变为此次http 请求的sessionid,然后点击button2,出现messagebox显示“chp”字符串,说明winform已经通过sessionID验证!

如果理解有误,欢迎指导,谢谢!!
总结:进过这次的不断学习,终于自己了解的更丰富了呀。程序之路是崎岖的,但是这是我喜欢的生活!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值