读取 HTTP 标头
Posted
技术标签:
【中文标题】读取 HTTP 标头【英文标题】:Reading HTTP headers 【发布时间】:2011-07-21 14:56:25 【问题描述】:我正在尝试将我的应用程序与 Web 服务和 here 连接,用户建议将自定义标头发送回我的应用程序。
我正在使用此代码
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);
什么都不返回。
如何获取“完成”值?
【问题讨论】:
【参考方案1】:我建议将一个插槽连接到您回复的void QNetworkReply::metaDataChanged ()
信号。
Qt 文档说
只要此回复中的元数据发生更改,就会发出此信号。 元数据是不是内容(数据)本身的任何信息, 包括网络标头。在大多数情况下,元数据 将在接收到第一个数据字节时完全知道。 但是,可能会收到标头或其他信息的更新 数据处理期间的元数据。
我确实在 Qt 中使用了 web-services/client,但我注意到某些标头的信息在我预期的时候不可用!我不得不“等待”这个信号来检查标题内容。
【讨论】:
rawHeaderList()
返回这个("Date", "Server", "X-Powered-By", "XAppRequest-Status", "Content-Length", "Keep-Alive", "Connection", "Content-Type")
,所以我认为这不是问题。
reply->rawHeader(bytes);
命令中bytes
的内容是什么?你检查你是否通过了正确的headerName
?
这太明显了,因此我没有尝试。它使用 reply->rawHeader("XAppRequest-Status");
工作。以上是关于读取 HTTP 标头的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flask 中捕获和读取传入 HTTP 请求的标头? [复制]
ZOHO deluge 脚本 getUrl() 函数可以读取 HTTP 响应标头吗?