Wie setze ich ein Cookie mit QWebview in QML?
Frage
Ich verwende QWebView in QML.Ich möchte eine Website anzeigen, die authentifiziert werden muss.Daten sollten über Standard-Cookie übergeben werden. Irgendeine Hilfe?Zusätzlicher Link oder Beispiel wäre toll.
Vielen Dank im Voraus.
Lösung
Standardmäßig verfügt der vom Webkit verwendete Standard-QNetworkAccessManager über eine eigene (nicht persistente) Cookie-JAR, auch bekannt als QNetworkCookieJar.
Hiermit wird das Senden und Empfangen von Cookies während der Lebensdauer einer QWebPage behandelt.
Um dasselbe Cookie-Glas auf mehreren Seiten zu behalten, müssen Sie:
- Erstellen Sie eine Instanz eines QNetworkCookieJar, möglicherweise eine Unterklasse es, um es dauerhaft zu machen
- Bringen Sie diese Keksdose jeweils neu an
QWebPage erstellt
Beispiel für ein dauerhaftes Cookie-Glas, das in den Einstellungen gespeichert wurde:
class PersistentCookieJar : public QNetworkCookieJar { public: PersistentCookieJar(QObject *parent) : QNetworkCookieJar(parent) { load(); } ~PersistentCookieJar() { save(); } public: void save() { QList<QNetworkCookie> list = allCookies(); QByteArray data; foreach (QNetworkCookie cookie, list) { if (!cookie.isSessionCookie()) { data.append(cookie.toRawForm()); data.append("\n"); } } QSettings settings; settings.setValue("Cookies",data); } void load() { QSettings settings; QByteArray data = settings.value("Cookies").toByteArray(); setAllCookies(QNetworkCookie::parseCookies(data)); } };
So verwenden Sie:
QWebView* vw = new QWebView(this); PersistenCookieJar* jar = new PersistenCookieJar(this); vw->page()->networkAccessManager()->setCookieJar(jar); // the jar is reparented to the page jar->setParent(this); // reparent to main widget to avoid destruction together with the page
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow