如何在QML中使用QWebview设置cookie?
我正在QML中使用QWebView。我想显示需要身份验证的网站。数据应该通过标准cookie传递。 有什么帮助吗?额外的链接或例子将是伟大的如何在QML中使用QWebview设置cookie?,qml,qwebview,Qml,Qwebview,我正在QML中使用QWebView。我想显示需要身份验证的网站。数据应该通过标准cookie传递。 有什么帮助吗?额外的链接或例子将是伟大的 提前感谢。默认情况下,webkit使用的默认QNetworkAccessManager有自己的(非持久性)cookie jar,即QNetworkCookieJar 这将在QWeb页面的生命周期内处理Cookie的发送和接收 要在多个页面上保持相同的cookie jar,您必须: 创建QNetworkCookieJar的实例,可能是子类化的 它需要让它持久
提前感谢。默认情况下,webkit使用的默认QNetworkAccessManager有自己的(非持久性)cookie jar,即QNetworkCookieJar 这将在QWeb页面的生命周期内处理Cookie的发送和接收 要在多个页面上保持相同的cookie jar,您必须:
类PersistentCookieJar:publicQnetworkCookiejar{
公众:
PersistentCookieJar(QObject*parent):QNetworkCookieJar(parent){load();}
~PersistentCookieJar(){save();}
公众:
作废保存()
{
QList list=allCookies();
QByteArray数据;
foreach(QNetworkCookie cookie,列表){
如果(!cookie.isSessionCookie()){
data.append(cookie.toRawForm());
数据。追加(“\n”);
}
}
QSettings设置;
设置值(“Cookies”,数据);
}
空荷载()
{
QSettings设置;
QByteArray数据=settings.value(“Cookies”).toByteArray();
SetAllCookie(QNetworkCookie::ParseCookie(数据));
}
};
使用:
QWebView*vw=新的QWebView(本);
PersistenCookieJar*jar=新的PersistenCookieJar(这个);
vw->page()->networkAccessManager()->setCookieJar(jar);//罐子被重新分配到页面上
jar->setParent(this);//重新复制到主窗口小部件以避免与页面一起被破坏
默认情况下,webkit使用的默认QNetworkAccessManager有自己的(非持久性)cookie jar,即QNetworkCookieJar
这将在QWeb页面的生命周期内处理Cookie的发送和接收
要在多个页面上保持相同的cookie jar,您必须:
类PersistentCookieJar:publicQnetworkCookiejar{
公众:
PersistentCookieJar(QObject*parent):QNetworkCookieJar(parent){load();}
~PersistentCookieJar(){save();}
公众:
作废保存()
{
QList list=allCookies();
QByteArray数据;
foreach(QNetworkCookie cookie,列表){
如果(!cookie.isSessionCookie()){
data.append(cookie.toRawForm());
数据。追加(“\n”);
}
}
QSettings设置;
设置值(“Cookies”,数据);
}
空荷载()
{
QSettings设置;
QByteArray数据=settings.value(“Cookies”).toByteArray();
SetAllCookie(QNetworkCookie::ParseCookie(数据));
}
};
使用:
QWebView*vw=新的QWebView(本);
PersistenCookieJar*jar=新的PersistenCookieJar(这个);
vw->page()->networkAccessManager()->setCookieJar(jar);//罐子被重新分配到页面上
jar->setParent(this);//重新复制到主窗口小部件以避免与页面一起被破坏
提示:如果上面的代码不适用于您,那么您可以对其进行扩展,并覆盖虚拟cookiesForUrl(QUrl*)方法。在那里收集基类方法cookie,添加永久cookie并返回所有cookie。这样,cookie将被传递到浏览器中打开的任何URL。提示:如果上述代码不适用于您,则可以对其进行扩展并重写虚拟cookiesForUrl(QUrl*)方法。在那里收集基类方法cookie,添加永久cookie并返回所有cookie。这样,cookie将被传递到浏览器中打开的任何URL。