2010-08-01 13 views

Répondre

2

La plupart des sites utilisent des cookies pour stocker l'identifiant de session. Vous pouvez enregistrer les cookies à l'aide
QList<QNetworkCookie> QNetworkCookieJar::allCookies() const
et de les charger en arrière en utilisant
void QNetworkCookieJar::setAllCookies(const QList<QNetworkCookie> & cookieList)
Vous pouvez obtenir QNetworkCookieJar en utilisant
QNetworkCookieJar * QNetworkAccessManager::cookieJar() const
et vous pouvez vous QNetworkAccessManager utilisé par QWebPage en utilisant
QNetworkAccessManager * QWebPage::networkAccessManager() const

id session peut être également stocké dans le cadre de l'URL ou dans le champ de formulaire caché sur la page. Si le site utilise le premier, il suffit de sauvegarder l'URL et s'il utilise ce dernier, vous devez également enregistrer la page.

La tâche devient plus compliquée maintenant, quand le Web Storage pourrait être utilisé. Si un site utilise le stockage Web, vous devez prendre soin de l'enregistrer et de le restaurer en plus de toutes les données ci-dessus. Vous pouvez définir l'emplacement pour le stockage hors ligne à l'aide
void QWebSettings::setOfflineStoragePath(const QString & path)
et obtenir l'aide
QString QWebSettings::offlineStoragePath()
Vous pouvez obtenir des informations supplémentaires sur webkit-qt liste de diffusion et sur le canal IRC#qtwebkit sur freenode.net

0

Vous pouvez consulter à QNetworkCookieJar la fonction membre virtuel bool CookieHandler::setCookiesFromUrl (const QList<QNetworkCookie> & cookieList, const QUrl & url) peut être utilisée pour enregistrer les cookies dans votre propre stockage persistant. Par exemple,

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; 

}

fonction membre protégé void QNetworkCookieJar::setAllCookies (const QList<QNetworkCookie> & cookieList) est utilisé pour restaurer les cookies de votre propre espace de stockage à QNetworkCookieJar depuis QNetworkCookieJar ne met pas en œuvre le stockage permanent: il ne conserve que les cookies dans la mémoire. exemple de code,

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

}