QT网络编程: 使用QNetworkAccessManager上传post请求

2022-01-12 10:07:31 浏览数 (1)

一、功能介绍

在项目开发中,设备终端经常需要向服务器上传一些日志或者报告状态信息,下面使用QNetworkAccessManager封装了一个函数方便传入要上传的数据进行上传。 提交的数据格式使用JSON格式,请求方式使用post,代码里没有关联状态槽函数,实际运用里上传的数据量比较小,数据会间断性重复上传,就没判断成功状态。

二、核心代码

代码语言:javascript复制
#define TOKEN "abc-def-ghi-jkl-mno"
QString DeviceID="123456789";
QNetworkAccessManager SendErrorInfo_manager;
void SERVER_SendErrorInfo(QString text)
{
    //请求地址
    QString requestUrl;
    QNetworkRequest request;
    //请求地址
    requestUrl="http://192.168.1.123:6666/carmonitorsys/errlog/upload.action?";
    requestUrl =QString("token=%1&").arg(TOKEN);   //授权码
    requestUrl =QString("devId=%1").arg(DeviceID); //设备编号

    //设置请求地址
    QUrl url;
    url.setUrl(requestUrl);
    request.setUrl(url);
    request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
    //打包请求参数赋值
    QJsonObject post_data;
    QJsonDocument document;
    QByteArray post_param;

    post_data.insert("msg",text); //插入数据
    document.setObject(post_data);
    post_param = document.toJson(QJsonDocument::Compact);
   //开始上传
    SendErrorInfo_manager.post(request,post_param);
}

0 人点赞