WebRequest和WebBrowser同时登陆,使用同一个sessionID
2008-11-12 09:48
435 查看
在网上找了很久,于是产生了以下方法.
针对于使用WebBrowser控件浏览网页,在其Document.Cookie中找不到SessionID信息时,
则使用WebRequest发送请求,使用response.Headers["Set-Cookie"]来获得此属性中间的SessionID.
1CookieCollection cookieCheckCode;
2CookieContainer container = new CookieContainer();
3
4HttpWebResponse response = null;
5HttpWebRequest request = null;
6
7request = (HttpWebRequest)WebRequest.Create(string.Format("http://{0}/Login.aspx", host));
8request.Referer = "http://" + host;
9request.Method = "GET";
10request.Accept = "*/*";
11request.Timeout = 5000;
12request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)";
13response = (HttpWebResponse)request.GetResponse();
14responseStream = response.GetResponseStream();
15
16
17Cookie cookie4 = new Cookie("ASP.NET_SessionId", this.GetSessionId(response.Headers["Set-Cookie"]));
18cookie4.Domain = host;
19cookieCheckCode.Add(cookie4);
20
21responseStream.Close();
22response.Close();
23
24container.Add(cookieCheckCode);
GetSessionID方法:
1private string GetSessionId(string value)
7[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
2public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
1if (webBrowser1.Document != null)
2{
3{
5 InternetSetCookie(webBrowser1.Document.Url.AbsoluteUri, ccc.Name, ccc.Value);
6 }
7}
针对于使用WebBrowser控件浏览网页,在其Document.Cookie中找不到SessionID信息时,
则使用WebRequest发送请求,使用response.Headers["Set-Cookie"]来获得此属性中间的SessionID.
1CookieCollection cookieCheckCode;
2CookieContainer container = new CookieContainer();
3
4HttpWebResponse response = null;
5HttpWebRequest request = null;
6
7request = (HttpWebRequest)WebRequest.Create(string.Format("http://{0}/Login.aspx", host));
8request.Referer = "http://" + host;
9request.Method = "GET";
10request.Accept = "*/*";
11request.Timeout = 5000;
12request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)";
13response = (HttpWebResponse)request.GetResponse();
14responseStream = response.GetResponseStream();
15
16
17Cookie cookie4 = new Cookie("ASP.NET_SessionId", this.GetSessionId(response.Headers["Set-Cookie"]));
18cookie4.Domain = host;
19cookieCheckCode.Add(cookie4);
20
21responseStream.Close();
22response.Close();
23
24container.Add(cookieCheckCode);
GetSessionID方法:
1private string GetSessionId(string value)
7[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
2public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
1if (webBrowser1.Document != null)
2{
3{
5 InternetSetCookie(webBrowser1.Document.Url.AbsoluteUri, ccc.Name, ccc.Value);
6 }
7}
相关文章推荐
- WebRequest和WebBrowser同时登陆,使用同一个sessionID
- WebRequest和WebBrowser同时登陆,使用同一个sessionID
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 在 IIS 6 和 IIS 7中配置Https,设置WCF同时支持HTTP和HTPPS,以及使用HttpWebRequest和HttpClient调用HttpS
- C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 技术转载(鼠标点击X窗口关闭IE的同时清空session,最基本的就是处理用户重复登陆需要用到,我想这个的关键在于如何捕捉到关闭IE这个动作,之后再根据自身的需要使用session.invalidate()或者session.removeAttribute( "xxx "))
- web使用session安全登陆与退出
- c# 使用 HttpWebRequest模拟登陆(附带验证码)
- 使用C#的HttpWebRequest模拟登陆网站(续)
- 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
- 使用C#的HttpWebRequest模拟登陆网站
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 一个完整的Nodejs项目 完成连接数据库(MySQL),登陆、注册功能 session的使用 和发送邮件
- 使用C#的HttpWebRequest模拟登陆网站
- 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
- 通过SessionID和用户名来保证同一个用户不能同时登录
- c# 使用 HttpWebRequest模拟登陆(附带验证码)
- 使用C#的HttpWebRequest模拟登陆网站
- 如何将webbrowser控件的Cookie倒入CookieContainer供WebRequest使用
- 使用HttpClient和WebRequest时POST一个对象的写法