1
私はQMLでQWebViewを使用しています。私は認証が必要なウェブサイトを見せたい。データは標準クッキーで渡す必要があります。 助けてください?追加のリンクや例が素晴らしいでしょう。QWebviewでクッキーを設定するには?
ありがとうございます。
私はQMLでQWebViewを使用しています。私は認証が必要なウェブサイトを見せたい。データは標準クッキーで渡す必要があります。 助けてください?追加のリンクや例が素晴らしいでしょう。QWebviewでクッキーを設定するには?
ありがとうございます。
デフォルトでは、Webkitで使用されるデフォルトのQNetworkAccessManagerには、独自の(非永続的な)Cookie jar(別名QNetworkCookieJar)があります。
これは、QWebPageの寿命中のCookieの送受信を処理します。
あなたがする必要があり、複数のページにわたって同じクッキージャーを保つために:
例:
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
@shahinulを - あなたは答えを受け入れる必要があります。 –
ヒント:上記のコードが機能しない場合は、それを拡張して、cookiesForUrl(QUrl *)メソッドをオーバーライドすることができます。ベースクラスのメソッドのクッキーをそこに集め、あなたの永続的なクッキーを追加し、それらのすべてを返します。この方法で、あなたのクッキーはブラウザで開いたURLに渡されます。 – Fabian