Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QNetworkCookieJar中的setCookiesFromUrl()和cookiesForUrl_C++_Qt_Cookies_Network Programming - Fatal编程技术网

C++ QNetworkCookieJar中的setCookiesFromUrl()和cookiesForUrl

C++ QNetworkCookieJar中的setCookiesFromUrl()和cookiesForUrl,c++,qt,cookies,network-programming,C++,Qt,Cookies,Network Programming,当然,我会把我的用户名和密码发布到一个网站上,比如说。然后我从它那里得到cookies,我想把它保存在QNetworkAccessManager的对象qnam中 问题1 第一个问题是,在将cookies保存在reply\uuquot>的相应url中后,比如说,我无法通过或检索回cookies auto cookies=qvariant\u cast(回复->标题 (QNetworkRequest::SetCookieHeader)); auto-cookieJar=new-QNetworkCoo

当然,我会把我的用户名和密码发布到一个网站上,比如说。然后我从它那里得到cookies,我想把它保存在QNetworkAccessManager的对象
qnam

问题1 第一个问题是,在将cookies保存在
reply\uuquot>的相应url中后,比如说,我无法通过或检索回cookies

auto cookies=qvariant\u cast(回复->标题
(QNetworkRequest::SetCookieHeader));
auto-cookieJar=new-QNetworkCookieJar(&qnam_);
//qDebug()输出“http://example.org/sign.asp"
qDebug()请求().url();
//assert不会触发,这意味着“为url设置了一个或多个cookie”
断言(cookieJar->setCookieFromURL(cookies,reply->request().url());
qnam_uu.setCookieJar(cookieJar);
//qDebug()什么也不输出,但是“()”,为什么???
qDebug()cookiesForUrl(QUrl(“http://example.org"));
问题2 第二个是甚至我在“根主机名”中设置了cookies,比如说,我仍然无法通过相同的url检索它

assert(cookieJar->setCookiesFromUrl(cookies, QUrl("http://example.org")));
qnam_.setCookieJar(cookieJar);

// Still get nothing from it.
qDebug() << qnam_.cookieJar()->cookiesForUrl(QUrl("http://example.org"));
assert(cookieJar->setCookiesFromUrl(cookies,QUrl)http://example.org")));
qnam_uu.setCookieJar(cookieJar);
//还是什么也得不到。
qDebug()cookiesForUrl(QUrl(“http://example.org"));

请注意,我已经检查了and,我认为这不起作用


有什么想法吗?谢谢

我使用以下解决方案实现了这一点:

在QNetworkReply::finished的函数回调中,我添加了一个cookie

QNetworkCookie cookie("mycookie", mycookiedata.toUtf8());
QList<QNetworkCookie> cookies;
cookies.append(cookie);
mCookieJar.setCookiesFromUrl(cookies, reply->url());
QNetworkCookie cookie(“mycokie”,mycokiedata.toUtf8());
QList cookies;
cookies.append(cookie);
setCookiesFromUrl(cookies,reply->url());

我对此也有疑问,但很失望还没有人回答。我认为问题的一部分是,Cookie可以有一个“路径”,我相信您必须从该路径中的URL请求Cookie,因此如果您设置为“www.example.com”,并且Cookie有一个路径“/somePlace/”,那么您的Cookie只有在您调用cookiesForUrl(“www.example.com/somePlace”)时才会显示。顺便说一下,如果在发出请求之前将cookie jar分配给networkManager,它似乎会自己填充cookie。如果我弄明白了,我如何登录到web应用程序并保留我将回答的会话
QNetworkCookie cookie("mycookie", mycookiedata.toUtf8());
QList<QNetworkCookie> cookies;
cookies.append(cookie);
mCookieJar.setCookiesFromUrl(cookies, reply->url());