Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to recognize QNetWorkReply.Error() form QNetWorkManager.get() or QNetWorkManager.put()
Forum Updated to NodeBB v4.3 + New Features

How to recognize QNetWorkReply.Error() form QNetWorkManager.get() or QNetWorkManager.put()

Scheduled Pinned Locked Moved Unsolved General and Desktop
3 Posts 3 Posters 439 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • sonichyS Offline
    sonichyS Offline
    sonichy
    wrote on last edited by
    #1
    B.cpp
    QUrl url;
    QNetworkAccessManager manager;
    
    QNetworkReply *pReply = manager.put(QNetworkRequest(url), data);
    connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
    
    QNetworkReply *pReply = manager.get(QNetworkRequest(url));
    connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
    
    A.cpp
    void MainWindow::error(QNetworkReply::NetworkError error)
    {
        qDebug() << error;
        QMetaEnum metaEnum = QMetaEnum::fromType<QNetworkReply::NetworkError>();
        QNetworkReply *NReply = qobject_cast<QNetworkReply*>(sender());
        if(NReply->operation() == QNetworkAccessManager::PutOperation){// Crash NReply 0x0
            ui->label_error_upload->setText("Error: Upload " + QString(metaEnum.valueToKey(error)));
        }else{
            ui->label_error_download->setText("Error: Download " + QString(metaEnum.valueToKey(error)));
        }
    }
    

    https://github.com/sonichy

    Pablo J. RoginaP Gojir4G 2 Replies Last reply
    0
    • sonichyS sonichy
      B.cpp
      QUrl url;
      QNetworkAccessManager manager;
      
      QNetworkReply *pReply = manager.put(QNetworkRequest(url), data);
      connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
      
      QNetworkReply *pReply = manager.get(QNetworkRequest(url));
      connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
      
      A.cpp
      void MainWindow::error(QNetworkReply::NetworkError error)
      {
          qDebug() << error;
          QMetaEnum metaEnum = QMetaEnum::fromType<QNetworkReply::NetworkError>();
          QNetworkReply *NReply = qobject_cast<QNetworkReply*>(sender());
          if(NReply->operation() == QNetworkAccessManager::PutOperation){// Crash NReply 0x0
              ui->label_error_upload->setText("Error: Upload " + QString(metaEnum.valueToKey(error)));
          }else{
              ui->label_error_download->setText("Error: Download " + QString(metaEnum.valueToKey(error)));
          }
      }
      
      Pablo J. RoginaP Offline
      Pablo J. RoginaP Offline
      Pablo J. Rogina
      wrote on last edited by
      #2

      @sonichy said in How to recognize QNetWorkReply.Error() form QNetWorkManager.get() or QNetWorkManager.put():

      QNetworkReply *pReply = manager.put(QNetworkRequest(url), data); connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
       
      QNetworkReply *pReply = manager.get(QNetworkRequest(url));
      connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
      

      It seems strange, using the same pointer to hold two different objects...

      Remember that you're creating two replies, one per request; and they'll be handled in the same slot which will be invoked twice, and to know which reply object there will be straightforward

      Upvote the answer(s) that helped you solve the issue
      Use "Topic Tools" button to mark your post as Solved
      Add screenshots via postimage.org
      Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

      1 Reply Last reply
      0
      • sonichyS sonichy
        B.cpp
        QUrl url;
        QNetworkAccessManager manager;
        
        QNetworkReply *pReply = manager.put(QNetworkRequest(url), data);
        connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
        
        QNetworkReply *pReply = manager.get(QNetworkRequest(url));
        connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
        
        A.cpp
        void MainWindow::error(QNetworkReply::NetworkError error)
        {
            qDebug() << error;
            QMetaEnum metaEnum = QMetaEnum::fromType<QNetworkReply::NetworkError>();
            QNetworkReply *NReply = qobject_cast<QNetworkReply*>(sender());
            if(NReply->operation() == QNetworkAccessManager::PutOperation){// Crash NReply 0x0
                ui->label_error_upload->setText("Error: Upload " + QString(metaEnum.valueToKey(error)));
            }else{
                ui->label_error_download->setText("Error: Download " + QString(metaEnum.valueToKey(error)));
            }
        }
        
        Gojir4G Offline
        Gojir4G Offline
        Gojir4
        wrote on last edited by
        #3

        @sonichy said in How to recognize QNetWorkReply.Error() form QNetWorkManager.get() or QNetWorkManager.put():

        QNetworkAccessManager manager;

        Just for clarify, is your instance of QNetworkAccessManager still alive at the time your slots are called ? Because as you are declaring it on the stack, it may be already destroyed and I presume it will also destroy internal QNetworkReply objects.

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved