QT开发中文网

写一个 qt 代码的 restful 示例,需要有 json 的生成与解析。

以下是一个使用 Qt 的 RESTful 示例代码,它包括了 JSON 的生成和解析。

#include <QtNetwork>
#include <QJsonDocument>
#include <QJsonObject>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建一个网络请求并设置URL
    QNetworkRequest request(QUrl("https://jsonplaceholder.typicode.com/posts/1"));
    // 发送GET请求
    QNetworkAccessManager manager;
    QNetworkReply *reply = manager.get(request);
    QEventLoop loop;
    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    loop.exec();

    // 获取响应的数据
    QByteArray data = reply->readAll();
    reply->deleteLater();

    // 解析JSON数据
    QJsonDocument jsonResponse = QJsonDocument::fromJson(data);
    QJsonObject jsonObject = jsonResponse.object();

    // 打印JSON数据中的title字段
    qDebug() << "Title:" << jsonObject.value("title").toString();

    // 创建一个JSON对象
    QJsonObject postData;
    postData.insert("name", "Alice");
    postData.insert("age", 30);

    // 生成JSON数据
    QJsonDocument postDataJson(postData);
    QByteArray postDataBytes = postDataJson.toJson();

    // 发送POST请求
    QNetworkRequest postRequest(QUrl("https://jsonplaceholder.typicode.com/posts"));
    postRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    reply = manager.post(postRequest, postDataBytes);
    QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
    loop.exec();

    // 获取响应的数据
    data = reply->readAll();
    reply->deleteLater();

    // 解析JSON数据
    jsonResponse = QJsonDocument::fromJson(data);
    jsonObject = jsonResponse.object();

    // 打印JSON数据中的id字段
    qDebug() << "ID:" << jsonObject.value("id").toInt();

    return a.exec();
}

这个代码实现了向 https://jsonplaceholder.typicode.com/posts/1 发送 GET 请求以获取 JSON 数据,并打印出其中的 title 字段;然后,它创建了一个包含 name 和 age 字段的 JSON 对象,并将其作为 POST 请求发送到 https://jsonplaceholder.typicode.com/posts,再次解析 JSON 响应并打印出其中的 id 字段。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=802

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?