天天看點

QT網絡程式設計: 使用QNetworkAccessManager上傳post請求

一、功能介紹

在項目開發中,裝置終端經常需要向伺服器上傳一些日志或者報告狀态資訊,下面使用QNetworkAccessManager封裝了一個函數友善傳入要上傳的資料進行上傳。 送出的資料格式使用JSON格式,請求方式使用post,代碼裡沒有關聯狀态槽函數,實際運用裡上傳的資料量比較小,資料會間斷性重複上傳,就沒判斷成功狀态。

二、核心代碼

#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);
}