post请求JSON数据写入到txt中

首先在pro文件中添加: 

QT       += network

 .h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include             //以下是json数据传送所需头文件
#include 
#include 
#include 
#include 
#include 
#include 
#pragma execution_character_set("utf-8")
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    QByteArray query(QJsonObject jsonContent);
    void setParam(QString lineName,QString lineId);
    void timeSlot();
};
#endif // MAINWINDOW_H

.cpp文件

#include "mainwindow.h"
#include 
#include 
#include 

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
//    QTimer *timer = new QTimer(this);
//    //timer.setInterval(1000);  // 设置超时时间 10 秒
//    QObject::connect(timer,SIGNAL(timeout()),this,SLOT(timeSlot()));
//    timer->start(1000);
    timeSlot();
}

MainWindow::~MainWindow()
{
}

void MainWindow::timeSlot()
{
    QFile file("E:/西虹桥公司项目/浦东电子站牌/上海公交和平台数据比对/已配置线路信息2.txt");
    if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
        return;
    }
    QTextStream in(&file);
    QString line;
    line= in.readLine();
    qDebug()<<"line:"<上传的json内容
    postData.append(QJsonDocument(jsonContent).toJson());
    // 设置发送
    QNetworkAccessManager* manager = new QNetworkAccessManager();
    QNetworkRequest request;
//    request.setHeader("x-tif-sid","cc8d0e08eec6303c1940");
//    request.setHeader()
    //请求头token设置
    request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json;charset=utf-8"));
    QString token = "cc8d0e08eec6303c1940";
    QString token_headerData = token;
    request.setRawHeader("x-tif-sid",token_headerData.toLocal8Bit());
    request.setUrl(qUrl);

    // 开启一个局部的事件循环,等待响应结束,退出
    QNetworkReply* reply = manager->post(request, postData);
    QEventLoop eventLoop;
    connect(&timer, &QTimer::timeout, &eventLoop, &QEventLoop::quit);
    connect(manager, &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);
    timer.start();//启动定时器
    eventLoop.exec();//启动事件循环
    if(timer.isActive()){//处理响应,定时器激活状态
        timer.stop();//停止定时器
        if(reply->error() != QNetworkReply::NoError){//http请求出错,进行错误处理
            qDebug() << "http请求出错 : " << reply->errorString();
            reply->deleteLater();
            return queryErrorResult;
        }
        else{
            // http - 响应状态码
            int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
            qDebug()<<"服务器返回的Code : "<readAll();
                return replyContent;
            }
            else{
                reply->deleteLater();
                return queryErrorResult;
            }
        }
    }
    else{//超时处理
        disconnect(manager, &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);
        reply->abort();
        qDebug() << "http请求超时 ";
        return queryErrorResult;
    }
    reply->deleteLater();
    return queryErrorResult;
}

 思路:

1.读取数据QByteArray result= query(obj);

2.转换成JSON   QJsonObject json; json = QJsonDocument::fromJson(result).object();

3.通过JsonDocument写入到txt中

QJsonDocument json_doc;//创建json文件
json_doc.setObject(json);//将json对象转为json文件 file.write(json_doc.toJson(QJsonDocument::Indented));//写入文件

注意:如果是直接写入第二步中的json到txt中出现乱码

你可能感兴趣的:(json,qt5)