我正在用qt5编写一个小应用程序。此应用程序每分钟从API服务器获得答复。每件事都很好,但我碰到了一个bug。
在测试应用程序时,我发现如果我的无线再次断开和重新连接,应用程序将正常工作。另外,如果我使用我的宽带连接,连接是断开和重新连接,每件事也很好。现在,如果我在应用程序启动时使用我的无线,然后我断开无线连接,连接我的宽带,程序将看不到宽带连接,并不断给我网络错误。
我使用一个QNetworkAccessManager实例作为连接。有趣的是,如果我为每个请求创建了一个新的QNetworkAccessManager实例,应用程序就会正常工作。但是,我认为为每个请求声明一个新实例和建立连接都会有开销。我还试图在请求之前使用clearAccessCache(),但没有任何结果。
因此,基本上,我是在寻找一些东西,以重置QNetworkAccessManager与每个请求。下面是我的请求的示例代码:
// At class construct
manager = new QNetworkAccessManager(this);
// ....
// At member function
url = new QUrl("http://www.gridstatusnow.com/status");
manager->get(QNetworkRequest(*url));发布于 2014-11-30 13:44:11
只有当网络不可访问时,才能尝试重新创建QNetworkAccessManager:
// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
delete manager;
manager = new QNetworkAccessManager(this);
}文献资料解释道:
默认情况下,此属性的值反映设备的物理状态。
https://stackoverflow.com/questions/27213136
复制相似问题