以下是一个使用 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 字段。