QMLでQWebViewを使用しています。認証が必要なWebサイトを表示したい。データは標準のCookieを介して渡される必要があります。何か助けはありますか?追加のリンクまたは例があれば素晴らしいでしょう。
少し早いですがお礼を。
デフォルトでは、webkitで使用されるデフォルトのQNetworkAccessManagerには、独自の(非永続的な)Cookie jar、別名QNetworkCookieJarがあります。
これは、QWebPageの存続期間中のCookieの送受信を処理します。
複数のページにまたがって同じCookiejarを保持するには、次のことを行う必要があります。
設定に保存された永続的なCookiejarの例:
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));
}
};
使用するには:
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