我使用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)
答案 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声明它)。