C++ QT 如何在QT程序中定义一个URL接口http://ip:port/123,让WEB端调用,请求方式为post,写一个完整的例子
时间: 2024-12-17 20:41:16 浏览: 8
ssh.rar_qt ssh_qtssh_qt中调用ssh_qt使用ssh_ssh qt
5星 · 资源好评率100%
在Qt中,你可以使用QNetworkAccessManager和相关的信号槽机制来处理HTTP请求。首先,你需要包含必要的头文件,并创建一个QObject派生类来管理网络请求。以下是一个简单的例子,展示了如何定义一个URL接口并发送POST请求:
```cpp
#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QJsonObject>
class MyHttpInterface : public QObject {
Q_OBJECT
public:
explicit MyHttpInterface(QObject *parent = nullptr) : QObject(parent) {
// 创建网络访问管理器
networkManager = new QNetworkAccessManager(this);
// 连接信号到槽
connect(networkManager, &QNetworkAccessManager::finished, this, [this](QNetworkReply *reply) {
if (reply->error() == QNetworkReply::NoError) {
QByteArray jsonData = reply->readAll();
// 对收到的数据进行解析
QJsonObject jsonObject = QJsonDocument::fromJson(jsonData).object();
qDebug() << "Received data: " << jsonObject;
} else {
qWarning() << "Error while sending request: " << reply->errorString();
}
});
}
private slots:
void sendPostRequest(const QString &url, const QVariantMap &data) {
QUrl requestUrl(url);
QJsonObject postData;
for (const auto &pair : data) {
postData.insert(pair.key(), pair.value().toString());
}
QNetworkRequest request(requestUrl);
request.setRawHeader("Content-Type", "application/json");
request.setMethod(QNetworkRequest::Post);
request.setRequestBody(QByteArray::fromUtf8(postData.toJson()));
// 发送请求
networkManager->send(request);
}
private:
QNetworkAccessManager *networkManager;
};
// 使用示例
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyHttpInterface httpInterface;
QVariantMap data = {{"key1", "value1"}, {"key2", "value2"}};
httpInterface.sendPostRequest("http://ip:port/123", data);
return app.exec();
}
阅读全文