#include #include #include #include // networking #include #include #include #include #include // json parsing #include #include #include #include #include // console output #include // #include int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlEngine engine; QQmlContext *objectContext = new QQmlContext(engine.rootContext()); QQmlComponent component(&engine, "application.qml"); QObject *object = component.create(objectContext); // ... delete object and objectContext when necessary // create custom temporary event loop on stack QEventLoop eventLoop; // "quit()" the event-loop, when the network request "finished()" QNetworkAccessManager mgr; QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); QString endpoint { "https://sph-s-api.olympics.com/summer/schedules/api/ENG/schedule/discipline/ARC" }; // the HTTP request QNetworkRequest req( (QUrl( endpoint )) ); QNetworkReply *reply = mgr.get(req); eventLoop.exec(); // blocks stack until "finished()" has been called if (reply->error() == QNetworkReply::NoError) { //success QString strReply = (QString)reply->readAll(); //parse json // qDebug() << "Response:" << strReply; QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); QJsonObject jsonObj = jsonResponse.object(); qDebug() << "Competitor:" << jsonObj["units"][0]["competitors"][0]["name"].toString(); delete reply; } else { //failure qDebug() << "Failure" <errorString(); delete reply; } return app.exec(); }