qnetwork不回复状态码或错误,但失败

问题描述 投票:1回答:1

我试图找出在qt中执行get请求时出了什么问题。我的networkmanager上装有以下插槽:

connect(mgr,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply*)));

    connect(mgr, SIGNAL(error(QNetworkReply::NetworkError)),
            this, SLOT(slotError(QNetworkReply::NetworkError)));

完成的请求就像:

    void FirebaseInteractor::requestFinished(QNetworkReply *rep)
    {
        QVariant statusCode = rep->attribute( QNetworkRequest::HttpStatusCodeAttribute );
        int status = statusCode.toInt();
        if ( status != 200 )
        {
            QString reason = rep->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString();
            qDebug() << "Pushnotification Request failed : " <<reason;
        }
        else{
            qDebug() << "Pushnotification has been send: ";
        }
        if ( !statusCode.isValid() )
        {

            QString status = statusCode.toString(); // or status_code.toInt();
            qDebug() << "Failing " << status;
            int code = statusCode.toInt();
            qDebug() << "Pushnotification Request failed invalid status code." << QString::number(code);
            QString reason = rep->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString();
            qDebug() << "reason " << reason;
            return;
        }
    }

但是状态始终为空Failing,并且打印了reason,但之后没有任何值(我原以为原因是超时,401等)。>]

我也尝试过:

    int status = statusCode.toInt();

    if ( status != 200 )
    {
        QString reason = rep->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString();
        qDebug() << "Pushnotification Request failed : " <<reason;
    }
    else{
        qDebug() << "Pushnotification has been send: ";
    }

But all reasons/codes are empty.

I also added:

    void FirebaseInteractor::slotError(QNetworkReply::NetworkError error)
    {
        qDebug() << "slotError" << error;
    }

但未调用。

我如何找出问题所在?

我试图找出在qt中执行get请求时出了什么问题。我在网络管理器上附加了以下插槽:connect(mgr,SIGNAL(finished(QNetworkReply *)),this,SLOT(requestFinished(...

c++ qt qnetworkaccessmanager qnetworkreply qnetworkrequest
1个回答
1
投票

您可以直接使用以下方法得到错误:

qDebug() << reply->error();
© www.soinside.com 2019 - 2024. All rights reserved.