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,... является постоянным (объявляет его статическим).

Другие вопросы по тегам