我正在構建一個基於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. 會話登錄信息過載
- 4. Codeigniter會話信息
- 5. Oracle會話信息
- 6. QtWebkit同步加載
- 7. 如何刪除所有會話信息?
- 8. 文本文件不會將信息加載到列表框中
- 9. 在導軌中加密會話信息
- 10. 如何將信息添加到registry.hub.docker.com?
- 11. 新會話存儲舊會話信息
- 12. Powershell:如何在會話期間重新加載Windows系統時間信息?
- 13. 傳遞PHP會話信息到cURL
- 14. 從python傳遞會話信息到flex
- 15. 不要reactjs /愛可信加載會話
- 16. 如何使用本地會話和MySQL的加入信息
- 17. 會話和用戶信息
- 18. 保存PHP會話信息
- 19. CodeIgniter丟失會話信息
- 20. NSMutableURLRequest丟失會話信息
- 21. PHP會話丟失信息
- 22. 會話信息丟失
- 23. 如何將會話信息傳遞給php中的子目錄
- 24. 如何從數據庫中獲取信息到會話?
- 25. 擴展對話框:跨會話信息,「預加載」事件以及如何居中啓動對話框?
- 26. 用戶會話信息來源添加到HttpContext的
- 27. 如何將附加信息添加到測試結果詳細信息
- 28. 將會話信息傳遞到存儲庫層
- 29. 獲取會話信息並將其放置到django表格中
- 30. 如何將令牌和其他會話信息發送到前端?