2013-05-10 60 views
0

我用QNetworkAccessManager处理发送一个HTTP请求:Qt的:QNetworkAccessManager不发送请求

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

回答

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

我想这是因为QNetworkAccessManager是异步的,需要时间来发送请求。但是,当超出范围时,需要url,query,...被销毁。 - >我们需要的范围时QNetworkAccessManager做派请求(使用QEventLoop()EXEC();)或让需要,网址,查询,...是持久的(静态声明它)。