如何正确地将QList<QNetworkCookie>转换为QByteArray?

How to properly convert QList<QNetworkCookie> to QByteArray?

本文关键字:转换 gt QByteArray QNetworkCookie lt 正确地 QList      更新时间:2023-10-16

在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 ?

注。我现在用的是Qt 5.3

更新:

上面的第二种方法可以正常工作。我在cookie的域名上犯了一个错误

这是我的建议

QList<QNetworkCookie> cookies; // Your cookies list
QByteArray data;               // Converted data
foreach (QNetworkCookie c, cookies) {
    data.append(c.toRawForm());
    data.append(';');
}