gpt4 book ai didi

c++ - QNetworkCookieJar 中的 setCookiesFromUrl() 和 cookiesForUrl

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:46:40 25 4
gpt4 key购买 nike

基本上,我将我的用户名和密码发布到一个站点,比如 http://example.org/signup.asp 。然后我从中获取 cookie,我想将其保存在 QNetworkAccessManager 的对象 qnam_ 中。

问题1

第一个问题是,将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"));

问题2

第二个是甚至 我在“根主机名”中设置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 cookiesHow 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com