Как отправить http запрос синхронно в QT? - PullRequest
0 голосов
/ 04 ноября 2019

Следующий код использует сетевой API QT для отправки HTTP-запроса и получения ответа:

void AnotherHttpClient::finished(QNetworkReply *qNetworkReply)
{
    qDebug() << qNetworkReply->readAll();
}

void AnotherHttpClient::get(QString url)
{
    QNetworkAccessManager *man = new QNetworkAccessManager(this);
    connect(man, &QNetworkAccessManager::finished, this, finished);
    const QUrl qurl = QUrl(url);
    QNetworkRequest request(qurl);
    man->get(request);
}

Мне нужно сделать этот код синхронным, и мне нужен метод get для возврата qNetworkReply. Как мне это сделать? Кстати, есть ли другой синхронный способ отправки запроса Http в QT?

1 Ответ

3 голосов
/ 04 ноября 2019

Вы можете сделать следующее:

QNetworkAccessManager l_nm;
QUrl l_url ("http://foo.bar");
QNetworkRequest l_req(l_url);
QNetworkReply *l_reply = l_nm.get(l_req);
QEventLoop l_event_loop;
QObject::connect(l_reply, SIGNAL(finished()), &l_event_loop, SLOT(quit()));
l_event_loop.exec();

, но использование цикла событий внутри приложения Qt - худшая идея из всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...