Как читать заголовки из QNetworkReply - PullRequest
2 голосов
/ 01 августа 2011

Как можно прочитать заголовки, например, файл cookie из QNetworkReply?

Ответы [ 3 ]

6 голосов
/ 06 июня 2014

Я просто подумал добавить к ответу выше, касающемуся rawHeader

QList<QByteArray> headerList = reply->rawHeaderList();
foreach(QByteArray head, headerList) {
    qDebug() << head << ":" << reply->rawHeader(head);
}
4 голосов
/ 01 августа 2011

Консультации Документация , есть несколько методов, связанных с чтением заголовков: header, rawHeader, rawHeaderList и rawHeaderPairs. Для конкретного случая получения куки вы можете использовать метод заголовка. Это будет выглядеть примерно так:

QNetworkReply *reply;
// somehow give reply a value
QVariant cookieVar = reply.header(QNetworkRequest::CookieHeader);
if (cookieVar.isValid()) {
    QList<QNetworkCookie> cookies = cookieVar.value<QList<QNetworkCookie> >();
    foreach (QNetworkCookie cookie, cookies) {
        // do whatever you want here
    }
}

Метод заголовка работает только для определенных заголовков HTTP. В общем случае, если для нужного заголовка нет значения QNetworkRequest :: KnownHeaders, возможно, вам нужен метод rawHeader.

2 голосов
/ 15 марта 2017

Я попробовал ответ Эвана Шоу, но есть небольшая ошибка.QNetworkRequest :: CookieHeader необходимо изменить на QNetworkRequest :: SetCookieHeader.Потому что я обнаружил, что это Set-Cookie в заголовке QNetworkReply, отличный от Cookie.

QNetworkReply *reply;
// somehow give reply a value
QVariant cookieVar = reply.header(QNetworkRequest::SetCookieHeader);
if (cookieVar.isValid()) {
    QList<QNetworkCookie> cookies = cookieVar.value<QList<QNetworkCookie> >();
    foreach (QNetworkCookie cookie, cookies) {
        // do whatever you want here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...