qtqnetworkrequest

Get http code request


U use QNetworkRequest to send post request. How can I get HTTP code of request? I send some request to server, on server I can see my request, but i have to check http code which server will return to application.


Solution

  • QNetworkRequest can not be used without QNetworkAccessManager that's responsible for making the actual request to the web server. Each request done by QNetworkAccessManager instance returns QNetworkReply where you should look for the status code from the server. It's located inside the QNetworkReply instance headers.

    The request is asynchronous so it can be catch when signal is triggered.

    Easiest example would be:

    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)),
        this, SLOT(replyFinished(QNetworkReply*)));
    
    manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
    

    Then in the slot implementation:

    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;
        }
    }
    

    Have a look on the official documentation. It explains all in details.