Чтение заголовков HTTP

Я пытаюсь подключить свое приложение к веб-службе и здесь, пользователь предложил отправить пользовательские заголовки обратно в мое приложение.

я использую этот код

void Coonnec::serviceRequestFinished(QNetworkReply *reply)
{
    QByteArray bytes = reply->readAll();

    if (reply->error() != QNetworkReply::NoError) {
        qDebug() << "Reply error: " + reply->errorString();
    }
    else
    {
        qDebug() << "Uploaded: " + QDateTime::currentDateTime().toString();
        qDebug() << reply->rawHeaderList();
    }
    reply->close();
    bytes.clear();
    reply->deleteLater();
}

из php я отправляю этот заголовок

header('XAppRequest-Status: complete');

При запуске приложения я вижу, что получаю этот заголовок, но не могу принять его значение, потому что

reply->rawHeader(bytes);

ничего не возвращает.

Как я могу принять значение «завершено»?


person kechap    schedule 21.07.2011    source источник


Ответы (1)


Предлагаю подключить слот к сигналу void QNetworkReply::metaDataChanged () вашего ответа.

Документ Qt говорит

Этот сигнал испускается всякий раз, когда метаданные в этом ответе изменяются. метаданные — это любая информация, не являющаяся самим содержимым (данными), в том числе сетевые заголовки. В большинстве случаев метаданные будут полностью известны к моменту получения первого байта данных. Однако можно получать обновления заголовков или других метаданных во время обработки данных.

Я использую веб-сервисы/клиент с Qt, и я заметил, что некоторая информация заголовка недоступна, хотя я ожидал, что она будет! Мне пришлось «ждать» этого сигнала, чтобы проверить содержимое заголовка.

person Thomas Vincent    schedule 21.07.2011
comment
rawHeaderList() возвращает это ("Date", "Server", "X-Powered-By", "XAppRequest-Status", "Content-Length", "Keep-Alive", "Connection", "Content-Type"), поэтому я думаю, что это не проблема. - person kechap; 21.07.2011
comment
Каково содержание bytes в команде reply->rawHeader(bytes);? Вы проверили, проходите ли вы правильный headerName ? - person Thomas Vincent; 21.07.2011
comment
Это было слишком очевидно, и в результате я не пробовал. Он работает с использованием reply->rawHeader("XAppRequest-Status");. - person kechap; 21.07.2011