原文:
网上收集的WebBrowser的Cookie操作
2、将WebBrowser的cookie信息传给HttpWebRequest.
先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面
//在WebBrowser中登录 cookie保存在 WebBrowser.Document.Cookie中
1、WebBrowser设置Cookie
1
public
partial
class
WebBrowserControl : Form
2
{
3
private String url;
4
5
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
6
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
7
8
public WebBrowserControl(String path)
9
{
10
this.url = path;
11
InitializeComponent();
12
13
// set cookie
14
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
15
16
// navigate
17
webBrowser.Navigate(url);
18
}
19

20
}
public
partial
class
WebBrowserControl : Form2

{3
private String url;4

5
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]6
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);7

8
public WebBrowserControl(String path)9

{10
this.url = path;11
InitializeComponent();12

13
// set cookie14
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);15

16
// navigate17
webBrowser.Navigate(url);18
}19

20
}
2、将WebBrowser的cookie信息传给HttpWebRequest.
先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面
//在WebBrowser中登录 cookie保存在 WebBrowser.Document.Cookie中
1
CookieContainer myCookieContainer
=
new
CookieContainer();
2
3
4
//
String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
5
string
cookieStr
=
webBrowser1.Document.Cookie;
6
string
[] cookstr
=
cookieStr.Split(
'
;
'
);
7
foreach
(
string
str
in
cookstr)
8
{
9
string[] cookieNameValue = str.Split('=');
10
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
11
ck.Domain = "www.abc.com";//必须写对
12
myCookieContainer.Add(ck);
13
}
14
15
HttpWebRequest hreq
=
(HttpWebRequest)HttpWebRequest.Create(
"
http://www.abc.com/search.asp
"
);
16
hreq.Method
=
"
POST
"
;
17
hreq.ContentType
=
"
application/x-www-form-urlencoded
"
;
18
19
//
自己创建的CookieContainer
20
hreq.CookieContainer
=
myCookieContainer;
21
22
string
postdata
=
"
id=2005&action=search&name=
"
;
23
byte
[] byte1
=
Encoding.ASCII.GetBytes(postdata);
24
hreq.ContentLength
=
byte1.Length;
25
26
Stream poststream
=
hreq.GetRequestStream();
27
poststream.Write(byte1,
0
, byte1.Length);
28
poststream.Close();
29
30
HttpWebResponse hres
=
(HttpWebResponse)hreq.GetResponse();
CookieContainer myCookieContainer
=
new
CookieContainer();2

3

4
//
String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
5
string
cookieStr
=
webBrowser1.Document.Cookie;6
string
[] cookstr
=
cookieStr.Split(
'
;
'
);7
foreach
(
string
str
in
cookstr)8

{9
string[] cookieNameValue = str.Split('=');10
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());11
ck.Domain = "www.abc.com";//必须写对12
myCookieContainer.Add(ck);13
}
14

15
HttpWebRequest hreq
=
(HttpWebRequest)HttpWebRequest.Create(
"
http://www.abc.com/search.asp
"
);16
hreq.Method
=
"
POST
"
;17
hreq.ContentType
=
"
application/x-www-form-urlencoded
"
;18
19
//
自己创建的CookieContainer
20
hreq.CookieContainer
=
myCookieContainer;21
22
string
postdata
=
"
id=2005&action=search&name=
"
;23
byte
[] byte1
=
Encoding.ASCII.GetBytes(postdata);24
hreq.ContentLength
=
byte1.Length;25
26
Stream poststream
=
hreq.GetRequestStream();27
poststream.Write(byte1,
0
, byte1.Length);28
poststream.Close();29
30
HttpWebResponse hres
=
(HttpWebResponse)hreq.GetResponse();