以下是一个简单的 Qt 代码的 RESTful 示例,用于向服务器发送 JSON 请求并解析响应的 JSON 数据。
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QJsonDocument>
#include <QJsonObject>
void sendRequest()
{
QNetworkAccessManager manager;
QNetworkRequest request(QUrl("http://example.com/api/data"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
// 请求 body
QJsonObject requestBody;
requestBody.insert("username", "foo");
requestBody.insert("password", "bar");
QJsonDocument requestDoc(requestBody);
QByteArray requestData = requestDoc.toJson();
QNetworkReply* reply = manager.post(request, requestData);
QObject::connect(reply, &QNetworkReply::finished, [=]() {
if (reply->error() == QNetworkReply::NoError) {
QByteArray responseData = reply->readAll();
QJsonDocument responseDoc = QJsonDocument::fromJson(responseData);
QJsonObject responseBody = responseDoc.object();
// 响应 body
QString message = responseBody.value("message").toString(); // "请求成功"
int code = responseBody.value("code").toInt(); // 200
// ...
} else {
qDebug() << "请求失败:" << reply->errorString();
}
reply->deleteLater();
});
}
以上代码中,我们首先使用 QJsonObject
创建了一个 JSON 对象作为请求体,并将其转换为 QByteArray
。然后,我们使用 QNetworkAccessManager
发送 POST 请求,将请求体发送给服务器。当收到服务器的响应时,我们从 QNetworkReply
对象中读取响应数据,并将其转换为 JSON 对象进行解析。最后,我们从 JSON 对象中提取出所需的数据。
注释的 JSON 程序文本内容如下:
请求 body:
{
"username": "foo",
"password": "bar"
}
响应 body:
{
"code": 200,
"message": "请求成功",
// ...
}