c++ - 用QT发送POST请求并读取Json Response

标签 c++ json qt

<分区>

我是 QT 开发的新手。我正在尝试对休息服务执行简单的发布请求以读取 Json 数据。

目前我写过:

void LoginWindow::on_pushButton_clicked(){
    // Setup the webservice url
    QUrl serviceUrl = QUrl("http://urlrestservice.com");

    QByteArray postData;
    postData.append("request=userdata&");
    postData.append("user=myusername&");
    postData.append("password=mypasswod");

    // Call the webservice
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);

    //QNetworkRequest::setHeader();
    QNetworkRequest request(serviceUrl);
    request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant( 
    QString("text/xml")));

   connect(manager, SIGNAL(finished(QNetworkReply*)), this, 
    SLOT(serviceRequestFinished(QNetworkReply*)));
    manager->post(request, postData);
}

之后我不知道如何进行。我做了一个空方法

void LoginWindow::serviceRequestFinished(QNetworkReply* reply){ }

但我不知道他们里面是怎么做的。

Post 请求应该返回我:

{
    "response": {
    "status": "200",
    "message": "Correct request"
},
"data": [
    [
        {
            "href": "link",
            "text": "string matr"
        },
        {
            "href": "link",
            "text": "string type"
        },
        {
            "href": "link",
            "text": "string name"
        },
        {
            "href": "link",
            "text": "string state"
        }
    ]

]
}

我读过 QJson 库的存在,但我认为官方文档有点困惑,我不知道如何继续。

最佳答案

到目前为止似乎没问题,接下来您应该向 serviceReqiestFinished 添加一些代码。

#include <QNetworkReply>
#include <QJsonValue>
#include <QJsonValueRef>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>


void LoginWindow::serviceRequestFinished(QNetworkReply* reply){
    QByteArray buffer = reply->readAll();
    qDebug() << buffer;
    QJsonDocument jsonDoc(QJsonDocument::fromJson(buffer));
    QJsonObject jsonReply = jsonDoc.object();

    QJsonObject response = jsonReply["response"].toObject();
    QJsonArray  data     = jsonReply["data"].toArray();
    qDebug() << data;

如果有用请告诉我

关于c++ - 用QT发送POST请求并读取Json Response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46348245/

相关文章:

c++ - 将对象从一个 unique_ptr 移动到另一个 C++

c++ - 将 std::vector 转换为数组

c++ - `std::tuple_size<std::array>`的目的是什么

c++ - 如何让文本在饼图的每个切片内居中?

android - Qt:在 Android 和 iOS 上设置应用程序图标

c++ - OpenGL 统一缓冲区?

java - 如何使用环境变量将json jar lib添加到java中

javascript - eval() 的替代品

javascript - 在 javascript 中使用 map 更改数组

c++ - Qt - 显示通过 QProcess 运行的 PowerShell 结果