如何在QML中使用QWebview设置cookie?

如何在QML中使用QWebview设置cookie?,qml,qwebview,Qml,Qwebview,我正在QML中使用QWebView。我想显示需要身份验证的网站。数据应该通过标准cookie传递。 有什么帮助吗?额外的链接或例子将是伟大的 提前感谢。默认情况下,webkit使用的默认QNetworkAccessManager有自己的(非持久性)cookie jar,即QNetworkCookieJar 这将在QWeb页面的生命周期内处理Cookie的发送和接收 要在多个页面上保持相同的cookie jar,您必须: 创建QNetworkCookieJar的实例,可能是子类化的 它需要让它持久

我正在QML中使用QWebView。我想显示需要身份验证的网站。数据应该通过标准cookie传递。 有什么帮助吗?额外的链接或例子将是伟大的


提前感谢。

默认情况下,webkit使用的默认QNetworkAccessManager有自己的(非持久性)cookie jar,即QNetworkCookieJar

这将在QWeb页面的生命周期内处理Cookie的发送和接收

要在多个页面上保持相同的cookie jar,您必须:

  • 创建QNetworkCookieJar的实例,可能是子类化的 它需要让它持久
  • 将此cookie jar附加到每个新的 创建QQ网页
  • 保存到设置的持久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,您必须:

  • 创建QNetworkCookieJar的实例,可能是子类化的 它需要让它持久
  • 将此cookie jar附加到每个新的 创建QQ网页
  • 保存到设置的持久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。