Вопрос

Я действительно нуб с 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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top