Я использую Qt, я обнаружил, что QWebView и QNetworkRequest не могут совместно использовать файлы cookie в моей программе.В Qt QWebView и QNetworkRequest не могут делиться куки-файлами
Я знаю, что я должен установить cookiejar в QNetworkAccessManager и поделиться им, так:
networkAccessManager = new QNetworkAccessManager();
networkAccessManager->setCookieJar(new CCookieJar);
QWebView* webView = new QWebView(this);
webView->page()->setNetworkAccessManager(networkAccessManager);
Когда я использую WebView, чтобы загрузить веб-сайт, и я войти в его. Все в порядке. Но пока я установил таймер для использования QNetworkRequest для загрузки html, веб-браузер выйдет на веб-сайт, я считаю, что файлы cookie были сброшены, поэтому изменение sessionid.
QString surl = "http://www.website.com"
QNetworkRequest request;
request.setUrl(QUrl(surl));
QList<QNetworkCookie> cookies = networkAccessManager->cookieJar()->cookiesForUrl(surl);
for(QList<QNetworkCookie>::iterator it = cookies.begin(); it!=cookies.end(); it++)
{
request.setHeader(QNetworkRequest::CookieHeader, QVariant::fromValue<QNetworkCookie>(*it));
}
QNetWorkReply* reply = networkAccessManager->get(request)
connect(reply, SIGNAL(finished()), this, SLOT(httpFinished()));
В httpFinished я устанавливаю файлы cookie в networkAccessManager.
QNetworkReply* reply = qobject_cast<QNetworkReply *>(sender());
QVariant varCookies = reply->header(QNetworkRequest::SetCookieHeader);
QList<QNetworkCookie> cookies = varCookies.value< QList<QNetworkCookie> >();
networkAccessManager->cookieJar()->setCookiesFromUrl(cookies, reply->url());
reply->deleteLater();
Я хочу WebView и QNetworkRequest получить результат можно разделить сессию, так что я могу получить данные в состоянии входа. Но моя программа не работает. Я пишу программный код путем поиска в том же примере.
Не можете ли вы рассказать мне, что происходит в моей программе и как ее исправить. Благодаря!