温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET中Session和Cookie如何使用

发布时间:2021-07-16 11:18:39 来源:亿速云 阅读:106 作者:Leah 栏目:编程语言

ASP.NET中Session和Cookie如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开。本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ASP.NET表单并保持Session和Cookie 的一个完整的例子。本文所有源代码:AutoPostWithCookies.rar

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

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

try  {  CookieContainercookieContainer=newCookieContainer();   ///////////////////////////////////////////////////  //1.打开MyLogin.aspx页面,获得VeiwState&EventValidation  ///////////////////////////////////////////////////  //设置打开页面的参数  stringURI="http://localhost:1165/WebTest/MyLogin.aspx";  HttpWebRequestrequest=WebRequest.Create(URI)asHttpWebRequest;  request.Method="GET";  request.KeepAlive=false;   //接收返回的页面  HttpWebResponseresponse=request.GetResponse()asHttpWebResponse;  System.IO.StreamresponseStream=response.GetResponseStream();  System.IO.StreamReaderreader=newSystem.IO.StreamReader(responseStream,Encoding.UTF8);  stringsrcString=reader.ReadToEnd();   //获取页面的VeiwState  stringviewStateFlag="id=\"__VIEWSTATE\"value=\"";  inti=srcString.IndexOf(viewStateFlag)+viewStateFlag.Length;  intj=srcString.IndexOf("\"",i);  stringviewState=srcString.Substring(i,j-i);   //获取页面的EventValidation  stringeventValidationFlag="id=\"__EVENTVALIDATION\"value=\"";  i=srcString.IndexOf(eventValidationFlag)+eventValidationFlag.Length;  j=srcString.IndexOf("\"",i);  stringeventValidation=srcString.Substring(i,j-i);   ///////////////////////////////////////////////////  //2.自动填充并提交MyLogin.aspx页面  ///////////////////////////////////////////////////  //提交按钮的文本  stringsubmitButton="登录";   //用户名和密码  stringuserName="1";  stringpassword="1";   //将文本转换成URL编码字符串  viewState=System.Web.HttpUtility.UrlEncode(viewState);  eventValidation=System.Web.HttpUtility.UrlEncode(eventValidation);  submitButton=System.Web.HttpUtility.UrlEncode(submitButton);   //要提交的字符串数据。格式形如:user=uesr1&password=123 stringformatString=  "userName={0}&password={1}&loginButton={2}&__VIEWSTATE={3}&__EVENTVALIDATION={4}";  stringstringpostString=  string.Format(formatString,userName,password,submitButton,viewState,eventValidation);   //将提交的字符串数据转换成字节数组  byte[]postData=Encoding.ASCII.GetBytes(postString);   //设置提交的相关参数  request=WebRequest.Create(URI)asHttpWebRequest;  request.Method="POST";  request.KeepAlive=false;  request.ContentType="application/x-www-form-urlencoded";  request.CookieContainer=cookieContainer;  request.ContentLength=postData.Length;   //提交请求数据  System.IO.StreamoutputStream=request.GetRequestStream();  outputStream.Write(postData,0,postData.Length);  outputStream.Close();   //接收返回的页面  response=request.GetResponse()asHttpWebResponse;  responseresponseStream=response.GetResponseStream();  reader=newSystem.IO.StreamReader(responseStream,Encoding.GetEncoding("GB2312"));  srcString=reader.ReadToEnd();   ///////////////////////////////////////////////////  //3.打开Default.aspx页面  ///////////////////////////////////////////////////  //设置打开页面的参数  URI="http://localhost:1165/WebTest/Default.aspx";  request=WebRequest.Create(URI)asHttpWebRequest;  request.Method="GET";  request.KeepAlive=false;  request.CookieContainer=cookieContainer;   //接收返回的页面  response=request.GetResponse()asHttpWebResponse;  responseresponseStream=response.GetResponseStream();  reader=newSystem.IO.StreamReader(responseStream,Encoding.UTF8);  srcString=reader.ReadToEnd();   ///////////////////////////////////////////////////  //4.分析返回的页面  ///////////////////////////////////////////////////  //  }  catch(WebExceptionwe)  {  stringmsg=we.Message;  }


说明:
1) 之所以能够保持 Session 和 Cookie 是因为使用了 Cookie 容器(CookieContainer),见红色的代码部分。
2) POST ASP.NET页面时,需要把 VeiwState 和 EventValidation 数据也一同 POST 过去。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI