前文“asp.net 程序自动提交登陆表单并保持Session及Cookie ”说到了通过WEB程序提交表单的方法,大体思路是获取HttpWebRequest客户端登陆后的Cookie,并附加到下次请求的CookieContainer中。这样做确实比较麻烦,每次都要重复请求登陆页获得Cookie。当然我们可以将这个登陆后获得的CookieContainer保存起来,至于保存到哪里都无所谓,如果要持久的话,保存到数据库中是最好的。
现在的情况是,如果我们已经知道了登陆后的Cookie,下次请求时将这些COOKIE直接附加到CookieContainer,是不是更方便呢?至少程序上少了获取Cookie的代码,界面上也不需要设置登陆表单的提交参数。
要知道登陆后Cookie的方法很多,用IE浏览器打开登陆页并登陆后,系统当前用户目录Cookies下都留下了记录,你也可以通过一些辅助工具来获取Cookie。
我们来看看代码上如何实现的:
//实例化CookieContainer对象
System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
//设置附加的Cookie
cookieContainer.SetCookies( new Uri( "请求的网址URL") , "Cookie实例字符串,每个实例以逗号分隔");
//请求时,带上这个CookieContainer
......
// 将提交的字符串数据转换成字节数组
byte[] postData = encoding.GetBytes(postString);
// 设置提交的相关参数
HttpWebRequest request = WebRequest.Create( url ) as HttpWebRequest;
request.Referer = url;
request.CookieContainer = cookieContainer ;
request.Method = method.ToUpper();
......