网站为了区分不同的用户,会在每次访问这个站点时给此会话一个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;
}