Qt:QNetworkAccessManager不发送请求

时间:2013-05-10 10:15:17

标签: qt5 qnetworkaccessmanager qeventloop

我使用QNetworkAccessManager来处理发送http请求:

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

如果没有行QEventLoop()。exec();,该应用程序将不会发送请求。但如果使用行QEventLoop()。exec();,它会。我不知道为什么?
你能清楚我吗? 非常感谢你! (P / s:我看过这个链接:Sending an HTTP request using QNetworkAccessManager

1 个答案:

答案 0 :(得分:0)

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,...是持久的(用static声明它)。