您的位置:首页 > 产品设计 > UI/UE

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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐