【问题标题】:Qt: QNetworkAccessManager dont send requestQt:QNetworkAccessManager 不发送请求
【发布时间】:2013-05-10 10:15:16
【问题描述】:

我使用 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

【问题讨论】:

    标签: qt5 qnetworkaccessmanager qeventloop


    【解决方案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 ......是持久的(用静态声明它)时,我们需要在范围内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2018-12-27
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多