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

标签 c++ qt

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(';');
}

关于c++ - 如何正确地将 QList<QNetworkCookie> 转换为 QByteArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140712/

相关文章:

c++ - OpenCV 背景减法 c++

c++ - 当使用来自其他函数的临时 QString 的非 const QString 引用调用函数时,GDB 崩溃

c++ - 使用 openssl libcrypto 使用 RSA 私钥解密数据时 RSA_NO_PADDING 的用法

c++ - QThread 和 QTcpServer 是一个好的选择吗?

c++ - 为什么delete操作符中没有调用析构函数?

c++ - 需要帮助理解 std::find 算法

c++ - 将静态库链接行添加到我的 Qt 项目文件没有任何区别

c++ - eclipse CDT/Qt : have a Qt Gui project depend on another C++ project in the workspace

python - pyqt QTreeWidget 项目下降信号

c++ - 如何在 Windows 上为 Qt 安装 OpenSSL 1.1.0?