我正在构建一个基于Qtwebkit的专用浏览器。我想在登录经过验证的网站时保存会话信息,并在重新启动浏览器时再次加载此信息。我怎样才能做到这一点?如何将会话信息加载到qtwebkit?
回答
大多数网站使用cookie来存储会话ID。您可以使用
QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
cookie保存和使用
void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> & cookieList)
加载他们回来可以使用
QNetworkCookieJar * QNetworkAccessManager::cookieJar() const
得到QNetworkCookieJar
,你可以得到QNetworkAccessManager
通过QWebPage
使用
QNetworkAccessManager * QWebPage::networkAccessManager() const
会话ID使用可也可以作为url的一部分存储或者存储在页面的隐藏表单域中。如果网站使用前者,则足以保存网址,如果使用后者,则也必须保存网页本身。
现在当任务变得更加复杂时,可以使用Web Storage。如果网站使用网络存储,则除了上述所有数据之外,还应注意保存和恢复网站。您可以使用
void QWebSettings::setOfflineStoragePath(const QString & path)
设置为离线存储它的位置和使用
QString QWebSettings::offlineStoragePath()
得到你可能会得到webkit-qt邮件列表和关于freenode.net #qtwebkit IRC频道一些更多的信息
你可以参考到QNetworkCookieJar 虚拟成员函数bool CookieHandler::setCookiesFromUrl (const QList<QNetworkCookie> & cookieList, const QUrl & url)
可用于将cookie保存到您自己的持久性存储中。 例如,
bool CookieHandler::setCookiesFromUrl (const QList<QNetworkCookie> & cookieList, const QUrl & url) {
foreach(QNetworkCookie i, cookieList) {
// probably don't want to store session cookies
if (!i.isSessionCookie()) {
// save the cookie to own storage format
}
}
return true;
}
保护的成员函数void QNetworkCookieJar::setAllCookies (const QList<QNetworkCookie> & cookieList)
用来从自己的存储到QNetworkCookieJar恢复饼干,因为QNetworkCookieJar没有实现永久存储:只保持饼干在内存中。 示例代码,
void CookieHandler::setAllCookiestoJar() {
// retrieve cookies from local database
QList<QNetworkCookie> cookieList = this->getCookiesFromLocalDB();
this->setAllCookies(cookieList);
// check if they are correctly loaded
QList<QNetworkCookie> cookieList_tmp = this->allCookies();
foreach(QNetworkCookie i, cookieList_tmp)
qDebug() << i.toRawForm(QNetworkCookie::Full);
}
- 1. 将浏览器信息加入会话
- 2. QTWebKit无法加载页面时如何获取详细的错误信息?
- 3. QtWebkit同步加载
- 4. 文本文件不会将信息加载到列表框中
- 5. 如何将信息添加到registry.hub.docker.com?
- 6. 不要reactjs /爱可信加载会话
- 7. 会话信息丢失
- 8. CodeIgniter丢失会话信息
- 9. 会话和用户信息
- 10. 如何将会话信息传递给php中的子目录
- 11. 如何从数据库中获取信息到会话?
- 12. 扩展对话框:跨会话信息,“预加载”事件以及如何居中启动对话框?
- 13. 获取会话信息并将其放置到django表格中
- 14. 如何将附加信息添加到测试结果详细信息
- 15. 如何将令牌和其他会话信息发送到前端?
- 16. 如何加载静态配置信息
- 17. 如何将联系人信息保存到电话簿中?
- 18. Codeiniter不会将会话加载到其他页面
- 19. 将数据加载到会话:它会在那里
- 20. 如何将按钮添加到原生Android通话信息屏幕?
- 21. 如何将qtWebKit模块添加到qt创建者?
- 22. Telerik MVC Grid不会将数据加载到详细信息表(子表)
- 23. 如何让QtWebKit看到Flash?
- 24. 将消息发送到citrix会话
- 25. 如何将附加信息附加到测试规范?
- 26. 如何将附加信息添加到Twilio连接对象
- 27. 如何将附加信息添加到多对多关系?
- 28. 如何将附加信息附加到Pixmap?
- 29. 如何获得结束视频会话的会话统计信息
- 30. 需要自定义会话管理器帮助 - 如何访问会话信息?