我如何从一个QNetworkReply读取头

How do I read headers from a QNetworkReply

本文关键字:一个 QNetworkReply 读取      更新时间:2023-10-16

如何读取头,例如一个cookie的QNetworkReply?

我只是想添加到上面关于rawHeader的答案

QList<QByteArray> headerList = reply->rawHeaderList();
foreach(QByteArray head, headerList) {
    qDebug() << head << ":" << reply->rawHeader(head);
}

参考文档,有几个与读取头相关的方法:header, rawHeader, rawHeaderList和rawHeaderPairs。对于获取cookie的特定情况,可以使用header方法。它看起来像这样:

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
    }
}

header方法只对某些HTTP头有效。在一般情况下,如果您想要的标头没有QNetworkRequest::KnownHeaders值,则可能使用rawHeader方法。

我试了Evan Shaw的答案,但是有一点错误。QNetworkRequest::CookieHeader需要更改为QNetworkRequest::SetCookieHeader。因为我发现在QNetworkReply的头部是Set-Cookie而不是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
    }
}