我正在用qt5编写一个小应用程序。此应用程序每分钟从API服务器获取回复。每件事情都运转正常,但我遇到了一个错误。
在测试应用程序时,我发现如果我的无线断开连接并再次重新连接,应用程序将正常工作。此外,如果我使用我的宽带连接并断开连接并再次重新连接,那么每件事情都可以正常工作。现在,如果我在应用程序启动时使用我的无线,那么我断开无线连接并连接我的宽带,程序不会看到宽带连接,并一直给我网络错误。
我使用单个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));
答案 0 :(得分:3)
只有在无法访问网络时,您才可以尝试重新创建QNetworkAccessManager
:
// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
delete manager;
manager = new QNetworkAccessManager(this);
}
默认情况下,此属性的值反映设备的物理状态。