在Qt中,QWebView和QNetworkRequest可以';不要分享饼干

在Qt中,QWebView和QNetworkRequest可以';不要分享饼干,qt,cookies,qwebview,qnetworkaccessmanager,Qt,Cookies,Qwebview,Qnetworkaccessmanager,我使用Qt,发现QWebView和QNetworkRequest无法在我的程序中共享cookies 我知道我应该将cookiejar设置为QNetworkAccessManager并共享它,因此: networkAccessManager = new QNetworkAccessManager(); networkAccessManager->setCookieJar(new CCookieJar); QWebView* webView = new QWebView(this); web

我使用Qt,发现QWebView和QNetworkRequest无法在我的程序中共享cookies

我知道我应该将cookiejar设置为QNetworkAccessManager并共享它,因此:

networkAccessManager = new QNetworkAccessManager();
networkAccessManager->setCookieJar(new CCookieJar);

QWebView* webView = new QWebView(this);
webView->page()->setNetworkAccessManager(networkAccessManager);
当我使用webView加载网站并登录时。没关系。 但是,虽然我设置了一个计时器来使用QNetworkRequest下载html,但webView将在网站中注销,我看起来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()));
QString surl=”http://www.website.com"
QNetworkRequest请求;
setUrl(QUrl(surl));
QList cookies=networkAccessManager->cookieJar()->cookiesForUrl(surl);
对于(QList::iterator it=cookies.begin();it!=cookies.end();it++)
{
setHeader(QNetworkRequest::CookieHeader,QVariant::fromValue(*it));
}
QNetWorkReply*reply=networkAccessManager->get(请求)
连接(应答,信号(finished()),此,插槽(httpFinished());
在httpFinished中,我将cookies设置为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();
QNetworkReply*reply=qobject_cast(sender());
QVariant varCookies=reply->header(QNetworkRequest::SetCookieHeader);
QList cookies=varCookies.value();
networkAccessManager->cookieJar()->SetCookieFromURL(cookies,回复->url());
回复->删除稍后();
我希望webView和QNetworkRequest获得结果,以便共享会话,以便我可以在登录状态下获取数据。但是我的程序不起作用。我通过搜索同一个例子来编写程序代码


你不能告诉我我的程序出了什么问题,以及如何纠正吗。谢谢

尝试之后,我发现我应该做的就是将webView的用户代理头添加到请求中

例如:

request.setRawHeader("User-Agent", "mozilla/5.0 (windows NT 5.1) applewebki...");

或者重写QWebPage的函数userAgentForUrl(const-QUrl&url),以返回您在请求中使用的代理。

尝试之后,我发现我所要做的就是将webView的用户代理头添加到请求中

例如:

request.setRawHeader("User-Agent", "mozilla/5.0 (windows NT 5.1) applewebki...");
或者重写QWebPage的函数userAgentForUrl(const-QUrl&url),以返回您在请求中使用的代理