qt c++中 http post body 为json
时间: 2023-09-09 07:11:32 浏览: 156
在 Qt C++ 中,可以使用 QNetworkAccessManager 类来发送 HTTP POST 请求,并将请求体设置为 JSON 格式。下面是一个简单的示例代码:
```cpp
#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QUrlQuery>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QNetworkAccessManager manager;
QJsonObject json;
json.insert("name", "John");
json.insert("age", 30);
QJsonDocument doc(json);
QByteArray data = doc.toJson();
QNetworkRequest request(QUrl("https://example.com/api"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkReply *reply = manager.post(request, data);
QObject::connect(reply, &QNetworkReply::finished, [&](){
if (reply->error() == QNetworkReply::NoError) {
QByteArray response = reply->readAll();
qDebug() << "Response:" << response;
} else {
qDebug() << "Error:" << reply->errorString();
}
reply->deleteLater();
QCoreApplication::quit();
});
return a.exec();
}
```
在这个示例中,我们首先创建了一个 QJsonObject 对象,用于生成 JSON 数据。然后将其转换为 QByteArray 类型的数据,并将其设置为请求体。
接下来,我们创建了一个 QNetworkRequest 对象,并设置其 URL 和 Content-Type 头部为 application/json。最后,我们使用 QNetworkAccessManager 的 post() 函数发送了 HTTP POST 请求,并连接了 finished() 信号来处理响应。在信号处理函数中,我们首先检查响应是否有错误,如果没有错误,则读取响应并输出到控制台。最后,我们调用 deleteLater() 函数来释放 QNetworkReply 对象的内存,并调用 QCoreApplication::quit() 函数来退出应用程序。
阅读全文