我正在尝试将我的应用程序生成的 cookie 保存到磁盘位置,例如C:\Users\Username\AppData\Local\MyCompany\MyApp
. 我已经实现了一个 webview,并且已经完成了对我简单浏览器的编码,最后要做的是保存 cookie。
我可以 qDebug() 从 webapp 获得的 cookie,它们显示 cookie 的格式正确,但我 a) 不确定从那里去哪里, b) 不能 100% 确定如何创建 cookiejar 类的子类?
下面我在 MainWindow 构造函数中创建我的 cookiejar 对象
view = new QWebView(this);
jar = new QNetworkCookieJar;
view->page()->networkAccessManager()->setCookieJar(jar);
在我的回复完成槽中,我可以看到回复中包含的 cookie,我尝试保存它,但没有任何反应,也没有收到任何运行时错误。在这方面没有很多东西,并且已经看到一些帖子,其中的指令是创建一个子类 QNetworkCookieJar,但之前没有在 Qt/C++ 中创建一个子类。
有没有一种简单的方法来存储 cookie,我不是在寻找任何花哨的东西。cookie 只是确保在登录页面上勾选了一些复选框。
// SLOT that accepts the read data from the webpage
void MainWindow::slotReplyFinished(QNetworkReply *reply){
if(reply->isFinished()){
QVariant variantCookies = reply->header(QNetworkRequest::SetCookieHeader);
QList<QNetworkCookie> cookies = qvariant_cast<QList<QNetworkCookie> >(variantCookies);
qDebug() << "Cookies reply: " << cookies;
QNetworkCookie cookie; //Create a cookie
jar = new QNetworkCookieJar;
//view->page()->networkAccessManager()->setCookieJar(jar);
jar->setCookiesFromUrl(cookies, reply->request().url());
//qDebug() << "Saved cookies: " << jar->getAllCookies();
}
qDebug() << "Network reply: " << reply->errorString() << reply->error() << reply->request().url();
}