网上收集的WebBrowser的Cookie操作

原文: 网上收集的WebBrowser的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}


 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();

你可能感兴趣的:(WebBrowser)