簡體   English   中英

如何正確轉換QList <QNetworkCookie> 到QByteArray?

[英]How to properly convert QList<QNetworkCookie> to QByteArray?

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;
}

但是, setCookiesFromUrl無法識別我得到的QList<QNetworkCookie> ,它總是返回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(';');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM