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)


person aviit    schedule 10.05.2013    source источник


Ответы (1)


void f()    
{        
    static QNetworkRequest request( QUrl( address ) );        
    static QNetworkAccessManager mng;
    mng.get(request);
}
void main()
{
    ...
    f();
    ...
}

Я думаю, это потому, что QNetworkAccessManager является асинхронным и ему нужно время для отправки запроса. Но require, url, query,... уничтожается, когда выходит за рамки. -> нам нужна область действия, когда QNetworkAccessManager отправляет запрос (используйте QEventLoop().exec(); ) или позволяет требовать, URL, запрос, ... является постоянным (объявить его статическим).

person aviit    schedule 11.05.2013