2

我正在尝试读取可以登录到日志文件的 http 请求标头(使用 Qt/c++)。我可以使用以下简单代码读取响应标头:

QList<QByteArray> headerList = pReply->rawHeaderList();

foreach(QByteArray head, headerList)
{
    qDebug() << head << ":" << pReply->rawHeader(head);
}

pReply->close();

但到目前为止,我对请求标头没有运气。在寻找解决方案时,我遇到了这篇文章:阅读完整的 HTTP 请求标头;但我并不真正了解如何使用 Qt 实现类似的功能。

我有点失落。我该怎么办?

4

2 回答 2

2

rawHeader实际上是QByteArray的QPair。请参阅:RawHeader。您可以为每个使用 RawHeader 而不是 QByteArray 或只是遍历列表:

    QList<QByteArray> headerList = pReply->rawHeaderList();

    for (int i = 0; i < rawHeaderList.count(); ++i) {
        qDebug() << head << ":" << pReply->rawHeader(i);
    }

    pReply->close();
于 2013-11-29T16:57:30.447 回答
0

没有直接的方法来获取请求的标头,但是您可以获取标头列表并对其进行迭代并保存在 QVariantMap 中。这是一个示例代码。

auto reqHeaderName = reply->request().rawHeaderList();
QVariantMap reqHeaders;
for (QString header : reqHeaderName)
{
    reqHeaders.insert(header, reply->request().rawHeader(header.toUtf8()));
}
于 2018-02-17T15:13:06.580 回答