CEF 获取Cookie例子 CefCookieManager C++
2018-06-17 22:27:38来源:未知 阅读 ()
简介
Chromium Embedded Framework (CEF)是由 Marshall Greenblatt 在2008年创办的开源项目,致力于基于Google Chromium项目开发一个Web控件。 CEF目前已支持多种编程语言和操作系统,能方便地集成到现有或者新的应用程序中,设计上,它追求高性能的同时,也追求易于使用,它的基本框架通过原生库提供C和C++的编程接口,这些接口将宿主程序与Chromium与WebKit的实现细节隔离,能让浏览器与应用程序无缝集成,并支持自定义插件、协议、Javascript对象与扩展。宿主程序还能根据需要控制资源加载、页面跳转、上下文菜单、打印等等。这些好处都是在支持Google Chrome同等效率与HTML5技术可用的基本上提供的。现在很多主流的客户端都使用了CEF来显示Web页面:网易云音乐、QQ、豌豆荚等(安装目录下可以找到libcef.dll)。
正文
首先从cef_cookie.h 源码中看到CefCookieManager 这个类:
// Visit all cookies on the IO thread. The returned cookies are ordered by // longest path, then by earliest creation date. Returns false if cookies // cannot be accessed. /// /*--cef()--*/ virtual bool VisitAllCookies(CefRefPtr<CefCookieVisitor> visitor) =0; /// // Visit a subset of cookies on the IO thread. The results are filtered by the // given url scheme, host, domain and path. If |includeHttpOnly| is true // HTTP-only cookies will also be included in the results. The returned // cookies are ordered by longest path, then by earliest creation date. // Returns false if cookies cannot be accessed. /// /*--cef()--*/ virtual bool VisitUrlCookies(const CefString& url, bool includeHttpOnly, CefRefPtr<CefCookieVisitor> visitor) =0;
1 class CefCookieVisitor : public virtual CefBase { 2 public: 3 /// 4 // Method that will be called once for each cookie. |count| is the 0-based 5 // index for the current cookie. |total| is the total number of cookies. 6 // Set |deleteCookie| to true to delete the cookie currently being visited. 7 // Return false to stop visiting cookies. This method may never be called if 8 // no cookies are found. 9 /// 10 /*--cef()--*/ 11 virtual bool Visit(const CefCookie& cookie, int count, int total, 12 bool& deleteCookie) =0; 13 };
可以通过VisitAllCookies获取所有cookies;VisitUrlCookies获取域名下的所有cookies。
看到VisitUrlCookies的参数是CefCookieVisitor;所以实现一个类用于回调读取cookies;
class CCookieVisitor : public CefCookieVisitor { public: CCookieVisitor() {}; ~CCookieVisitor() {}; bool Visit(const CefCookie& cookie, int count, int total, bool& deleteCookie); //这是一个宏 //所有的框架类从CefBase继承,实例指针由CefRefPtr管理,CefRefPtr通过调用AddRef()和Release()方法自动管理引用计数。 IMPLEMENT_REFCOUNTING(CookieVisitor); };
//作为类的成员变量
CefRefPtr<CCookieVisitor> m_CookieVisitor; m_CookieVisitor(new CCookieVisitor());
//以下代码执行 即回调Visit
CefRefPtr<CefCookieManager> cefCookieManager = CefCookieManager::GetGlobalManager(nullptr);
if (cefCookieManager)
{
cefCookieManager->VisitUrlCookies(url ,true , m_visitor);
}
回调进行读取,count为当前cookie total为总数。具体看CefCookieVisitor的注释,接下来便可以Visit读取到数据
1 bool CookieVisitor::Visit(const CefCookie & cookie, int count, int total, bool & deleteCookie) 2 { 3 if (count == total) 4 { 5 return false; 6 } 7 if (cookie.name.str && cookie.value.str) 8 { 9 string strName = cookie.name.str; 10 string strValue = cookie.value.str; 11 } 12 return true; 13 }
结束!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:深入探索C++对象模型(五)
下一篇:Qt自定义标签按钮
- PC微信获取登录二维码 2020-05-18
- C++常见编程--获取当前系统时间 2020-02-25
- 51.Qt-使用ajax获取ashx接口的post数据 2019-12-23
- LeetCode380 常数时间插入、删除和获取随机元素 2019-09-08
- 用C#+WMI实现获取w3wp进程对应的应用程序池 2019-06-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash