这个示例比较简单,在这里记录一下,方便后续查询。这个示例主要是实现解析body头文件,并将数据转发。
知识点:获取body参数,request.getBody();
//解析json
QJsonParseError json_error;
//获取body参数
QByteArray bodydata = request.getBody();
qDebug() << bodydata;
QJsonDocument doucment = QJsonDocument::fromJson(bodydata, &json_error);
if (json_error.error == QJsonParseError::NoError) {
if (doucment.isObject()) {
const QJsonObject obj = doucment.object();
if (obj.contains("vehicleid"))
{
int vehicleid = obj.value("vehicleid").toInt();
dataobj.insert("vehicleid", vehicleid);
}
if (obj.contains("alarmtype"))
{
QString alarmcode = obj.value("alarmtype").toString();
dataobj.insert("alarmtype", alarmcode);
}
if (obj.contains("alarmcode"))
{
int alarmcode = obj.value("alarmcode").toInt();
dataobj.insert("alarmcode", alarmcode);
}
}
}
QJsonDocument document1;
document1.setObject(dataobj);
QByteArray byte_array = document1.toJson(QJsonDocument::Compact); //类型转换
//http请求
QNetworkRequest request1;
QNetworkAccessManager nam;
connect(&nam, &QNetworkAccessManager::finished, this, &RequestMapper::receiveDeviceStatusReply);
request1.setUrl(QUrl("http://169.254.48.97:8080/device_status")); //要请求的网址
QNetworkReply* reply = nam.post(request1, byte_array); //post请求头+传输的数据
//开启事件循环,直到请求完成
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();