作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
基本上,我将我的用户名和密码发布到一个站点,比如 http://example.org/signup.asp 。然后我从中获取 cookie,我想将其保存在 QNetworkAccessManager 的对象 qnam_
中。
第一个问题是,将cookie保存到reply_
对应的url后,say http://example.org/signup.asp ,我无法通过 http://example.org/ 取回它 或 http://example.org/something_else .
auto cookies = qvariant_cast<QList<QNetworkCookie>>(reply_->header
(QNetworkRequest::SetCookieHeader));
auto cookieJar = new QNetworkCookieJar(&qnam_);
// qDebug() outputs "http://example.org/sign.asp"
qDebug() << reply_->request().url();
// assert won't fire, which means "one or more cookies are set for url"
assert(cookieJar->setCookiesFromUrl(cookies, reply_->request().url()));
qnam_.setCookieJar(cookieJar);
// qDebug() outputs nothing, but "()", why???
qDebug() << qnam_.cookieJar()->cookiesForUrl(QUrl("http://example.org"));
第二个是甚至 我在“根主机名”中设置cookie,比如 http://example.org/ ,我仍然无法通过相同的 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"));
请注意,我已经检查了 QT HTTP Post issue when server requires cookies和 How do I save cookies with Qt? ,我认为这是行不通的。
有什么想法吗?谢谢!
最佳答案
我使用以下解决方案使这个工作正常:
在 QNetworkReply::finished 的函数回调中我添加了一个 cookie
QNetworkCookie cookie("mycookie", mycookiedata.toUtf8());
QList<QNetworkCookie> cookies;
cookies.append(cookie);
mCookieJar.setCookiesFromUrl(cookies, reply->url());
关于c++ - QNetworkCookieJar 中的 setCookiesFromUrl() 和 cookiesForUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36954933/
基本上,我将我的用户名和密码发布到一个站点,比如 http://example.org/signup.asp 。然后我从中获取 cookie,我想将其保存在 QNetworkAccessManager
我是一名优秀的程序员,十分优秀!