我的应用程序包含两个应用程序。其中一个可能会要求另一个人通过REST调用执行一些命令(在localhost上调用一个URL)。为此,我们使用QNetworkAccessManager
(用于put,get和post请求)。
现在有一个问题 - 设备有时可能会脱机,当他这样做时 - 出于某种原因我们无法通过访问管理器使用其他呼叫。它似乎发生在它使用的网络配置被破坏时(如禁用Wifi适配器等)。恢复此配置(启用Wifi)后,访问管理器将再次开始工作。
另一个细节 - 当我们离线时启动应用程序 - 无论在线状态如何,它都能正常运行。它可能与this有关。
这在Win和Mac上都会重现。
所以问题是,无论设备在线状态如何,我如何可靠地使用QNetworkAccessManager用于此目的?我们仅将此管理器用于localhost REST调用。我应该设置什么默认网络配置或行为?
以下用法示例:
mNetManager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setRawHeader("User-Agent", "AppName/1.0");
request.setUrl(QUrl(url));
*reply = mNetManager->get(request);
编辑:不需要在线状态,因为我只需要此访问管理器来访问浏览器上的本地URL
答案 0 :(得分:2)
您似乎可以强制网络辅助功能获取本地内容:
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);
答案 1 :(得分:0)
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;
}