【发布时间】:2012-08-06 12:30:12
【问题描述】:
同步 QNetworkAccessManager::get 的正确方法是什么?
qt wiki 提供了一种方法,但指出“不建议在实际应用程序中使用它”。 mailinglist 提供了与 wiki 类似的解决方案。
【问题讨论】:
标签: qt http-get synchronous qtnetwork
同步 QNetworkAccessManager::get 的正确方法是什么?
qt wiki 提供了一种方法,但指出“不建议在实际应用程序中使用它”。 mailinglist 提供了与 wiki 类似的解决方案。
【问题讨论】:
标签: qt http-get synchronous qtnetwork
Yum 可能会使用这样的东西:
QEventLoop loop;
connect(_netReply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
【讨论】:
wiki 和 yttrium 的回答中提到的简单解决方案非常脆弱,因为它不能处理所有可能的故障情况(例如代理),因此不应该在生产环境中使用,不幸的是它有变得相当多产,所以任何要求同步 QNAM 的人都会被“异步使用它[愚蠢]”或这段最终会失败的简单代码难住。
我还没有找到 Qt 团队自己制定的“适当”解决方案,但是 codeproject 上的这个人已经足够体面,可以制作一个更全面的包装器,应该更安全:
http://www.codeproject.com/Articles/484905/Use-QNetworkAccessManager-for-synchronous-download
【讨论】: