@东条咲 你好,想跟你请教个问题:
m_pReply = pManager->post(request, content);
在void Widget::replyFinished(QNetworkReply *reply)读取
QByteArray bytes = reply->readAll();
我需要取其中的2个字段值,ticket和CSRFPreventionToken重新组成JSON文件,我是这么做的:
str1=str1.append("PVEAuthCookie=");
str1=str1.append(nCode);
cout <<str1<<endl;
QJsonObject jobj;
jobj.insert("Cookie",str1);
jobj.insert("CSRFPreventionToken",strUserID);
QJsonDocument document;
document.setObject(jobj);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);
然后还怎么将byte_array 传到HTTP头中,以便于下次get的自动认证呢。
添加HTTP请求头不是用JSON进行描述的,这段代码感觉像是从Python上翻译过来的。
Qt中处理这个问题使用QNetworkRequest的setRawHeader进行处理的。Cookie我也是用setRawHeader手动管理,因为在我这里Qt自带的Cookie管理从没成功过。CSRF那段直接在对应的请求Request里setRawHeader("CSRFPreventionToken", strUserID.toLatin()),第一个参数是QString类型,第二个参数是QByteArray类型。然后用AccessManager直接操作Request即可