Qt QNetworkAccessManager或其他方法获取html状态代码而不获取页面内容?

时间:2012-12-14 07:48:41

标签: c++ qt qnetworkaccessmanager

我需要获取网站的HTML状态代码 今天我只是对域进行简单的get请求,然后我获得状态代码作为响应的一部分,还有站点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();

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

2 个答案:

答案 0 :(得分:2)

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

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

我想这可以通过QNetworkAccessManager使用head() method

来完成

答案 1 :(得分:1)

我同意@ shevron的回答,但如果您与之通信的网站不够“聪明”,无法实施HEAD请求,您仍然可以避免readAll()来电。

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

这应该避免readAll()的内存开销。