Qt: QNetworkAccessManager не отправляет запрос
Я использовал QNetworkAccessManager для обработки отправки http-запроса:
void f()
{
QNetworkRequest request( QUrl( address ) );
QNetworkAccessManager mng;
mng.get(request);
//QEventLoop().exec();
}
void main()
{
...
f();
...
}
Если без строки QEventLoop(). Exec (); приложение не отправит запрос. Но если со строкой QEventLoop(). Exec();, то так и будет. Я не понимаю, почему?
Вы можете очистить меня?
Большое спасибо!
(P/s: я видел эту ссылку: отправка HTTP-запроса с использованием QNetworkAccessManager)
1 ответ
void f()
{
static QNetworkRequest request( QUrl( address ) );
static QNetworkAccessManager mng;
mng.get(request);
}
void main()
{
...
f();
...
}
Я думаю, это потому, что QNetworkAccessManager является асинхронным и требует времени для отправки запроса. Но require, url, query,... уничтожается, когда выходит из области видимости. -> нам нужно в области, когда QNetworkAccessManager действительно отправляет запрос (использует QEventLoop().exec();) или пусть require, url, query,... является постоянным (объявляет его статическим).