Qt QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray & cookieString)
中有一个函数可以将QByteArray
转换为QList<QNetworkCookie>
,但是,如何正确执行保留的转换?
我试过使用QVariant与:
QVariant v;
v.setValue(cookies); // cookies has type of QList<QNetworkCookie>
QByteArray bytes = v.toByteArray();
但是实际上我是通过这种方式获得了空的
bytes
。所以我滚动了自己的:
inline QDataStream &operator<<(QDataStream &d, const QList<QNetworkCookie> &c)
{
QList<QByteArray> l;
for(auto const & cookie: c) {
l << cookie.toRawForm();
}
return d << l;
}
inline QDataStream &operator>>(QDataStream &d, QList<QNetworkCookie> &c)
{
QList<QByteArray> l;
d >> l;
for(auto const & bytes: l) {
c += QNetworkCookie::parseCookies(bytes);
}
return d;
}
但是,
QList<QNetworkCookie>
无法识别我得到的setCookiesFromUrl
,它始终返回false。那么,如何正确地将
QList<QNetworkCookie>
转换为QByteArray
呢?ps。我现在正在使用Qt 5.3。
更新:
上面的第二种方法可以正常工作。我在Cookie的域上犯了一个错误。
最佳答案
这是我的建议
QList<QNetworkCookie> cookies; // Your cookies list
QByteArray data; // Converted data
foreach (QNetworkCookie c, cookies) {
data.append(c.toRawForm());
data.append(';');
}
关于c++ - 如何正确地将QList <QNetworkCookie>转换为QByteArray?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25140712/