c++ - 如何在 qt main() 中运行 post 请求

标签 c++ qt

我想做一个简单的 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/

相关文章:

c++ - Ubuntu :/usr/bin/ld: cannot find -lSDL2_ttf 上的 SDL2_TTF

c++ - 为什么语句中的链接方法无法给出预期的结果?

c++ - QT运行时崩溃

qt - 创建固定高度的 Qt 布局

c++ - 将密码保存在应用程序中

qt - 使用 cmake 从源代码构建应用程序和 Qt

c++ - 指定extern “C”时,为什么Visual Studio无法给出 undefined reference 错误?

c++ - WaitForSingleObject 不等待进程结束

c++ - 输入验证难题

c++ - QLabel & QComboBox setFont 不起作用