Я настоятельно рекомендую посмотреть код состояния http ответа следующим образом:
int http_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
В вашем примере это 200
(ОК), т.е.перенаправления нет вообще.
В любом случае, если вы вызываете
http://en.wikipedia.org/wiki/Vario-Tessar
(обратите внимание на отсутствие s в имени протокола) перенаправлениебудет происходить.
Учитывая, что менеджер и / или запрос используют политику перенаправления по умолчанию (QNetworkRequest::ManualRedirectPolicy
), ответ будет иметь код состояния 301 , на этот раз, инет данных.Более того, вы можете проверить цель перенаправления:
int code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
static QVector<int> redirectCodes{301, 302, 303, 305, 307, 308};
if(redirectCodes.contains(code))
{
QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
//...
На этом этапе вы можете начать новый запрос, используя цель перенаправления, или вообще прервать транзакцию, или как вам подсказывает ваша личная политика перенаправления.
Если вы просто не хотите заниматься перенаправлением вообще, вы можете установить другую политику на уровне менеджера, используя QNetworkAccessManager::setRedirectPolicy
, или на уровне запроса, используя QNetworkRequest::setAttribute
.