在使用 Qt 发送 HTTP 请求时,你可以使用 QNetworkAccessManager 来实现这一功能。以下是一个简单的示例,展示如何向指定的 URL 发送 JSON 数据:
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonDocument>
#include <QJsonObject>
#include <QUrl>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QNetworkAccessManager *manager = new QNetworkAccessManager(&a);
// 构建 JSON 数据
QJsonObject json;
json["key1"] = "value1";
json["key2"] = "value2";
QJsonDocument jsonDoc(json);
QByteArray jsonData = jsonDoc.toJson();
// 设置请求
QNetworkRequest request(QUrl("http://tuisong.vue100.com/think6/public/index.php//home/?lx=jieshou"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
// 发送 POST 请求
QNetworkReply *reply = manager->post(request, jsonData);
// 处理请求完成后的事件
QObject::connect(reply, &QNetworkReply::finished, [&]() {
if (reply->error() == QNetworkReply::NoError) {
QByteArray responseData = reply->readAll();
qDebug() << "Response:" << responseData;
} else {
qDebug() << "Error:" << reply->errorString();
}
reply->deleteLater();
a.quit();
});
return a.exec();
}
说明:
-
包含头文件:确保包含必要的头文件,如
QNetworkAccessManager,QNetworkRequest,QNetworkReply,QJsonDocument,QJsonObject,QUrl, 和QDebug。 -
创建
QNetworkAccessManager对象:用于管理网络请求。 -
构建 JSON 数据:使用
QJsonObject来创建 JSON 数据,然后将其转换为QByteArray。 -
设置请求:创建
QNetworkRequest对象并设置请求的 URL 和内容类型为application/json。 -
发送请求:使用
QNetworkAccessManager的post方法发送请求。 -
处理响应:连接
QNetworkReply的finished信号,以便在请求完成时处理响应数据或错误。
确保在实际使用中替换 JSON 数据和 URL 为你需要的实际值。此示例假设你在一个控制台应用程序中运行,因此使用 QCoreApplication。如果在 GUI 应用程序中,你将使用 QApplication。
642

被折叠的 条评论
为什么被折叠?



