Некорректная работа одного из примеров в поставке Qt. Объясните почему?

Разбираю пример downloadmanager из стандартной поставки Qt (examples\network\downloadmanager). Пример демонстрирует, как используя классы QNetworkRequest, QNetworkReply, QNetworkAccessManager можно успешно последовательно скачивать страницы из интернета по списку url. Все в нем понятно и вроде бы все правильно. Но я заметил, что контактовские (vk) страницы не скачиваются, т.е. файл создается пустой.

QNetworkRequest request(url);
    currentDownload = manager.get(request);
    connect(currentDownload, SIGNAL(downloadProgress(qint64,qint64)), SLOT(downloadProgress(qint64,qint64)));
    connect(currentDownload, SIGNAL(finished()), SLOT(downloadFinished()));
    connect(currentDownload, SIGNAL(readyRead()), SLOT(downloadReadyRead()));


Ну и собственно сама запись в файл:
void DownloadManager::downloadReadyRead()
{
    output.write(currentDownload->readAll());
}



Только у vk сигнал readyRead никогда не испускается и запись в файл не происходит.

Интересно было бы разобраться, почему так происходит.
  • Вопрос задан
  • 3369 просмотров
Пригласить эксперта
Ответы на вопрос 2
librarian
@librarian
Остальные страницы скачиваются нормально? Если да, то это блокировка со стороны вконтакта. Попробуйте менять юзер агент/IP адрес с которого ходите.
Ответ написан
gaelpa
@gaelpa
Посмотрите, например, wiresharkом на сетевой обмен с вк при работе из браузера и из QT приложения. Наверняка там случается какой-нибудь редирект на какой-нибудь https всвязи, например, с отсутствием нужных кук при запросе из qt.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы