Russian Qt Forum
Апрель 24, 2024, 16:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkDiskCache и redirect  (Прочитано 2257 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Июль 08, 2014, 19:12 »

Есть QNetworkAccessManager с установленным кешем QNetworkDiskCache, никакой магии...

Код
C++ (Qt)
   manager = new QNetworkAccessManager(this);
 
   QNetworkDiskCache *cache = new QNetworkDiskCache(this);
 
   // 100 Mb
   cache->setMaximumCacheSize(100*1024*1024);
   cache->setCacheDirectory("cacheDir");
 
   manager->setCache(cache);
 
   QNetworkRequest request(QUrl("http://yandex.ru"));
 
   request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork);
   request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, true);
 
   manager->get(request);

Данные грузятся из сети, всё вроде бы нормально. Теперь отключаем сеть, устанавливает режим контроля кеша в QNetworkRequest::AlwaysCache вместо QNetworkRequest::PreferNetwork, компилируем, запускаем... Результат - QNetworkReply::error() возвращает ошибку 203 (QNetworkReply::ContentNotFoundError). А всё потому, что я грузил yandex.ru, и произошёл редирект на yandex.by (который я обработал самостоятельно), и в кеш попали данные из yandex.by. Сайты без редиректов в этой ситуации работают нормально - отображается закешированная страница. Вопрос - какие есть мысли что с этим делать? В сети ничего не нашёл по этому поводу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 22.