我有一个QWebView,它加载某个页面,用户登录并开展他的业务。一切正常。
我想要做的是打开第二帧/ pae,使用登录用户会话和所有爵士加载报告页面,它将呈现给图像文件以便在小USB屏幕上显示。
现在,我使用完全不同的webView完成此操作,该视图无法访问受保护的页面,这有点安全风险。
这是我想到的一些伪代码:
webView->mainFrame->loadNormalUrl
secretFrame = webView->createSecretFrame
secretFrame->useSessionOf(webView->mainFrame)
secretFrame->loadReportUrl
secretFrame->doStuffThatAlreadyWorks
任何帮助,指针,链接都会非常有用!谢谢:))
答案 0 :(得分:2)
那么,
这个问题没有收到和回答,所以我打电话到qtwebkit邮件列表,他们非常有帮助。
重要的是继承QNetworkCookieJar,这是从磁盘加载的最重要方法,您可以在构造函数中调用它。
QList<QNetworkCookie> cookies;
if (m_file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&m_file);
QString txt = in.readAll();
QStringList lines = txt.split("\n");
foreach (QString c, lines) {
cookies.append(QNetworkCookie::parseCookies(c.toUtf8()));
}
m_file.close();
}
setAllCookies(cookies);
当然,你还需要一个写作功能,如下:
QTextStream out(&m_file);
foreach (const QByteArray &cookie, m_rawCookies)
out << cookie + "\n";
m_file.close();
你的原始饼干如下:
QList<QNetworkCookie> cookies = allCookies();
m_rawCookies.clear();
foreach (const QNetworkCookie &cookie, cookies) {
m_rawCookies.append(cookie.toRawForm());
}
如果您下载了webkit源代码,您可以查看testbrowser代码以获得更完整的示例。
答案 1 :(得分:1)
你可以解决这个问题的一种方法是根本不尝试使用QWebViews,而是将QNetworkManager子类化并挂钩其信号以窥探发回的QNetworkReplys。
否则,在您的第二个QWebView中,您可以将其内容设置为您要显示的HTML,并且您可能只能强制从缓存中获取数据。