离线使用QNetworkAccessManager



我的应用程序由两个应用程序组成。其中一个可能要求另一个通过REST调用(调用本地主机上的URL)执行一些命令。为此,我们使用QNetworkAccessManager(用于put、get和post请求)。

现在有一个问题-设备有时可能离线,当他这样做时-由于某种原因,我们不能通过访问管理器使用休息调用。当它使用的网络配置被破坏(如禁用Wifi适配器等)时,似乎会发生这种情况。当此配置恢复(启用Wifi)时,访问管理器再次开始工作。

另一个细节-当我们启动应用程序,而我们是离线的-它的工作,无论在线状态。这可能与此有关。

这在Win和Mac上都会复制。

所以问题是我如何可靠地使用QNetworkAccessManager用于此目的,而不管设备的在线状态?我们仅将此管理器用于本地主机REST调用。我应该设置什么默认网络配置或行为?

用法示例:

mNetManager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setRawHeader("User-Agent", "AppName/1.0");
request.setUrl(QUrl(url));
*reply = mNetManager->get(request);

编辑:在线状态是不需要的,因为我需要这个访问管理器仅用于访问浏览器上的本地url

看来你可以强制网络可访问性获取本地内容:

mNetManager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setRawHeader("User-Agent", "AppName/1.0");
request.setUrl(QUrl(url));
mNetManager->setNetworkAccessible(QNetworkAccessManager::Accessible); // <--
auto reply = mNetManager->get(request);

QNetworkAccessManager有网络可用性的东西。为什么不用呢?

QNetworkAccessManager * mNetManager = new QNetworkAccessManager(this);
connect(mNetManager, &QNetworkAccessManager::networkAccessibleChanged,
        this, &YourClass::slotExecutedWhenNetworkAccessibilityChanges);
NetworkAccessibility netAcc = mNetManager->networkAccessible();
switch (netAcc) {
    case QNetworkAccessManager::Accessible:
        // You are online.
        break;
    case QNetworkAccessManager::NotAccessible:
        // You are offline.
        break;
    case QNetworkAccessManager::UnknownAccessibility:
    default:
        // You know nothing, Jon Snow.
        break;
}

相关内容

  • 没有找到相关文章

最新更新