我想做一个简单的 post 请求 int main.cpp。看起来当我运行应用程序时它不会执行代码而只是跳过它。
我尝试使用 qt 调试器,但下面的代码在调试器启动后立即结束。
我已经用 postman 测试了我的 api,并且知道它可以工作
主要.cpp
#include <iostream>
#include <QNetworkReply>
#include <QNetworkAccessManager>
#include <QNetworkInterface>
using namespace std;
int main()
{
QByteArray jsonString = "{\"ipaddr\": "+ QByteArray::number(9) + ",\"transactionType\":"+QByteArray::number(10) + ",\"idEmployee\":"+QByteArray::number(10) +"}";
QNetworkRequest request(QUrl("http://192.168.1.25:3000/classlog/pi"));
request.setRawHeader("Content-Type", "application/json");
QNetworkAccessManager * manager = new QNetworkAccessManager();
manager->post(request, jsonString);
}
.pro
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
QT += network core
SOURCES += \
main.cpp
我希望我能够在我的服务器中收到请求,但我没有收到任何请求。谢谢
最佳答案
Qt 使用事件系统。您的网络管理员只会安排将在事件循环中处理的请求。这也是接收响应的地方。
您需要一个正在运行的事件循环(事实上,一个 QCoreApplication
对象,您会在执行代码时收到警告)。
#include <QtNetwork>
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QNetworkAccessManager mgr;
QNetworkRequest req(QUrl("http://stackoverflow.com"));
auto *resp = mgr.get(req);
QObject::connect(resp, &QNetworkReply::finished, [&]() {
qDebug() << "FINISHED";
if (resp->error() != QNetworkReply::NoError)
qDebug() << "Error: " << resp->errorString();
else
qDebug() << "Status: " << resp->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString();
// Stop when a response is received
app.quit();
});
// This will start the event loop that will eventually send the request and receive the response.
// It will run until you call app.quit()
return app.exec();
}
关于c++ - 如何在 qt main() 中运行 post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425854/