//构造请求
QNetworkRequest request;
request.setUrl(QUrl("http://xxxx/xxxx"));
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
//构造jsonArray
QJsonArray jsonArray;
jsonArray.push_back(QJsonValue(1));
jsonArray.push_back(QJsonValue(2));
//构造json字符串
QJsonObject jsonObject;
jsonObject.insert("userAccount",phone);
jsonObject.insert("userPassword",QString(passwd_md5));
jsonObject.insert("fileIds",QJsonValue(jsonArray));
QByteArray jsonStr = QJsonDocument(jsonObject).toJson();
//开始请求
QNetworkAccessManager manager;
QNetworkReply* reply = manager.post(request,jsonStr);
QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
eventLoop.exec(QEventLoop::ExcludeUserInputEvents);//开启事件循环,并响应用户输入,等待网络请求结束
if (reply->error() == QNetworkReply::NoError) //请求成功
{
QByteArray bytes = reply->readAll();
qDebug() << "响应体:" << QString::fromUtf8(bytes);
QJsonParseError json_error;
QJsonDocument doc = QJsonDocument::fromJson(bytes, &json_error);
//检查json是否有错误
if (json_error.error == QJsonParseError::NoError){
QJsonObject obj = doc.object();//开始解析json对象
//解析result字段为字符串
QString result = obj.value("result").toString();
//解析data为jsonObject
QJsonObject data = obj.value("data").toObject();
QString total = data.value("total").toString();//总条数
QString size = data.value("size").toString();//每页数量
QString pages = data.value("pages").toString();//总页数
QString current = data.value("current").toString();//当前页
//解析records字段为JsonArray
QJsonArray records = data.value("records").toArray();
for (int i = 0; i < records.size(); ++i) { // 遍历数组
//取出数组item的值
QJsonValue value = records.at(i);
//解析item为jsonObject
QJsonObject obj = value.toObject();
QString fileName = obj.value("fileName").toString();
QString pageTotle = obj.value("pageTotle").toString();
QString fileUrl = obj.value("fileUrl").toString();
QString id = obj.value("id").toString();
QString createDate = obj.value("createDate").toString();
}else{
Toast::showTip("服务器返回信息有误!");
}
}
else //请求失败
{
Toast::showTip("登录失败,请检查网络!");
}
reply->deleteLater();