目的:獲取cookie存入數據庫,以實現下次登錄的自動完成
知識點:事件和委托
建立cookie讀取對象,繼承接口ICookieVisitor
public class CookieVisitor : ICookieVisitor { //定義委托 public Action<Cookie> SendCookie = null; public bool Visit(CefSharp.Cookie cookie, int count, int total, ref bool deleteCookie) { if (SendCookie != null) { SendCookie(cookie); } return true; } public void Dispose() { } }
加載指定頁面的cookie信息
chrbro.FrameLoadEnd += (s, e) => { //一個頁面加載如果有多個iframe會重復加載多次,需自己判斷自己的加載的iframe或標記執行一次 BeginInvoke(new Action(() => { string _url = e.Url; //判斷是否是需要獲取cookie的頁面 if (_url.Contains("需要獲取cookie的地址")) { //注冊獲取cookie回調事件 ICookieManager cookieManager = chrbro.GetCookieManager(); CookieVisitor visitor = new CookieVisitor(); visitor.SendCookie += SaveCookie; cookieManager.VisitAllCookies(visitor); } })); };
回調函數體,這里可以執行需要執行的操作
private void SaveCookie(CefSharp.Cookie cookie) { Console.WriteLine("Name:" + cookie.Name + " Value:" + cookie.Value); ////保存數據庫操作,根據自己需求更改 //string sql = " INSERT INTO tbbro_cookies(name,value) VALUES ('" + cookie.Name + "','" + cookie.Value + "')"; //cladata.svrUpdate(sql);
}