0

我今天需要获取网站的 html 状态代码,我只是对域进行简单的获取请求,然后我将状态代码作为响应的一部分,还有站点 index.html 内容。

pNetworkManager = new QNetworkAccessManager(this);
reply = pNetworkManager->get(request);
QVariant vStatusCodeV =  reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);


data=reply->readAll();

如果可以避免,我想避免最后一个功能,有没有办法只获得域状态码?

4

2 回答 2

2

也许您可以发送 HEAD 请求而不是 GET 请求?

这不是 Qt / 客户端特定的解决方案,而是 HTTP 协议推荐的方法,当您不需要内容时,只是想获取请求通常会产生的标头,例如为了验证页面存在。

我想这可以通过使用head() 方法的 QNetworkAccessManager 来完成

于 2012-12-14T07:53:54.447 回答
1

我同意@shevron 的回答,但如果您正在与之通信的站点不够“聪明”来实现HEAD请求,您仍然可以避免readAll()调用。

QByteArray line = reply->readLine();  //< eg "HTTP/1.0 200 OK"
QList<QByteArray> chunks = line.split(' ');
QString statusCode = chunks[1];

那应该避免readAll().

于 2012-12-14T14:50:31.350 回答