[英]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.