C#中SESSIONID的获取

网站为了区分不同的用户,会在每次访问这个站点时给此会话一个ID,我们称之为SESSIONID,而这个ID在每个IE会话中是可以直接看到的,但在模拟登录中就很难获取到。我就在这个问题上卡了很长时间的壳,现在将此问题的解决方案写出来,以供后人参考。:-)

     其实说来得到这个SESSIONID的原理非常简单,就是在每次的HTTPWEBRESPONSE中CATCH到这个WEBEXCEPTION,从而在这个WEBEXCEPTION中得到那个网站返回的COOKIE值,一般来讲,此值为“Set-Cookie”,我们可以从此值中得到本次会话的SESSIONID,从而在以后的模拟登录时,将此SESSIONID作为Authorization子项发送给需要模拟登录的网页,从而实现自动登录!

现将我实现的这个得到SESSIONID的小函数贴出来::-)


        ******* String getrequestauthorization(String str)
        {
            String url = "www.11zhuce.com";                  //需要模拟登录的网页地址,可由VS05在网页登录时探测出来

            HttpWebRequest myrequest;
            try
            {
                myrequest = (HttpWebRequest)WebRequest.Create(url);
            }
            catch (WebException we)
            {
                MessageBox.Show(we.Message);
                return "";
            }

            String session="";
            HttpWebResponse myresponse;
            try
            {
                myresponse = (HttpWebResponse)myrequest.GetResponse();
            }
            catch (WebException ex)                      //下面非常关键!!!此处得到sessionid!!!
            {
                WebResponse res = ex.Response;
                session = res.Headers["Set-Cookie"];
                session = session.Substring(0, session.IndexOf(";"));
            }
            return session;
        }

posted @ 2010-02-15 11:41  猪悟能  阅读(7885)  评论(0编辑  收藏  举报