C ++ QnetWorkAccessManager (QT) в сочетании с OpenGL
-
26-10-2019 - |
Вопрос
Я действительно нуб с C ++ (как упоминалось мои предыдущие сообщения), однако мой друг предложил мне поработать с QnetWorkAccessManager, если я хочу отправить запрос на http GET для отправки информации.
В настоящее время я работаю с OpenGL-ES и хочу сделать следующие две строки кода, чтобы отправить запрос GET:
QNetworkAccessManager* netMan = new QNetworkAccessManager(this);
netMan->get(QNetworkRequest(QUrl("something/?userID=1")));
Тем не менее, он не любит «это», потому что он находится в методе Main (), и он не ссылается на QObject (я предполагаю QAPPLICATION). Когда я избавляюсь от «этого», мое приложение строит, но просто никогда не загружается (я ставлю «printf (1)» вверху, который даже не работает).
Есть предложения или альтернативы о том, как это исправить? Заранее спасибо.
-Джеймс
Решение
Параметр в QNetworkAccessManager
конструктор необходим только для указания QObject
На основе родителей, который будет нести ответственность за очистку (удаление) вашего объекта позже и не требуется, если вы планируете позвонить delete
на это сами.
Я не совсем уверен, на что вы имеете printf
Но чтобы получить что -либо обратно, вам нужно сохранить QNetworkReply
указатель, который возвращается призывом к get()
.
И чтобы получить что -либо от этого, вам нужен работа в цикле событий. Если ваше приложение только для консоли (без графического интерфейса), вы можете использовать QCoreApplication
объект.
Попробуйте этот минимальный код:
#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QNetworkAccessManager *netMan = new QNetworkAccessManager();
QNetworkReply *reply = netMan->get(QNetworkRequest(QUrl("http://google.com")));
a.connect(reply, SIGNAL(finished()), SLOT(quit()));
a.exec();
qDebug() << reply->readAll();
delete netMan;
}