2

我正在用 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));
4

1 回答 1

3

QNetworkAccessManager如果网络不可访问,您可以尝试重新创建:

// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
    delete manager;
    manager = new QNetworkAccessManager(this);
}

该文档解释说:

默认情况下,此属性的值反映设备的物理状态。

于 2014-11-30T13:44:11.200 回答