获取HTTP请求代码

8

使用QNetworkRequest发送POST请求。如何获取该请求的HTTP代码?我向服务器发送了一些请求,在服务器上我可以看到我的请求,但我必须检查服务器将返回给应用程序的http代码。

1个回答

14

QNetworkRequest 不能单独使用,需要和 QNetworkAccessManager 配合使用,后者负责向网络服务器发出实际的请求。每个由 QNetworkAccessManager 实例完成的请求都会返回一个 QNetworkReply,您可以在其中查找服务器状态码,该状态码位于 QNetworkReply 实例标头内。

该请求是异步进行的,因此可以在触发信号时捕获它。

最简单的示例如下:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
    this, SLOT(replyFinished(QNetworkReply*)));

manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

然后在插槽实现中:

void replyFinished(QNetworkReply *resp){
    QVariant status_code = resp->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    status_code.is_valid(){
        // Print or catch the status code
        QString status = status_code.toString(); // or status_code.toInt();
        qDebug() << status;
    }
}

请查看官方文档,其中详细解释了一切。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接