Я программирую небольшое приложение с помощью 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));
Вы можете попытаться воссоздать QNetworkAccessManager
только если сеть недоступна:
// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
delete manager;
manager = new QNetworkAccessManager(this);
}
Документация объясняет:
По умолчанию значение этого свойства отражает физическое состояние устройства.