Qt QNetworkAccessManager или другой метод получить html-код состояния, не получая содержимое страницы?

мне нужно получить html коды статуса сайтов
сегодня я просто делаю простой запрос на получение домена, а затем я получаю код статуса как часть ответа, а также содержимое сайта index.html.

pNetworkManager = new QNetworkAccessManager(this);
reply = pNetworkManager->get(request);
QVariant vStatusCodeV =  reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);data=reply->readAll();

эту последнюю функцию я бы хотел избежать, если ее можно избежать,
есть ли способ получить только код статуса домена?

0

Решение

Я согласен с ответом @ shevron, но если сайт, с которым вы общаетесь, недостаточно «умен» для реализации HEAD запрос, вы все еще можете избежать readAll() вызов.

QByteArray line = reply->readLine();  //< eg "HTTP/1.0 200 OK"QList<QByteArray> chunks = line.split(' ');
QString statusCode = chunks[1];

Это должно избежать использования памяти readAll(),

1

Другие решения

Может быть, вы можете отправить запрос HEAD вместо запроса GET?

Это не решение, специфичное для Qt / клиента, а подход, рекомендованный протоколом HTTP, когда вам не нужно содержимое, а вы просто хотите получить заголовки, которые обычно генерирует запрос, например, для проверки того, что страница существует.

Я полагаю, это можно сделать с помощью QNetworkAccessManager, используя метод head ()

2

По вопросам рекламы [email protected]