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. QNetworkAccessManager finished signal error
Forum Updated to NodeBB v4.3 + New Features

QNetworkAccessManager finished signal error

Scheduled Pinned Locked Moved General and Desktop
qnetworkaccessmsignals emit
16 Posts 5 Posters 8.0k Views 3 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #7

    Hi,

    Any chance of having something like:

    void MyCoolClass::getUpate()
    {
        Updater updater;
        updater.getToken();
    }
    

    ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    4 1 Reply Last reply
    0
    • M mcosta

      Hi,

      when you run your Qt code, can you see the request on the server side? (apache access_log file for instance)?

      what about remove the custom header? something changes?

      4 Offline
      4 Offline
      4j1th
      wrote on last edited by 4j1th
      #8

      @mcosta Removed the header part but nothing on access log. I think the QNetworkAccessManager no even sending any request.

      Pardon my English
      Thank you.

      1 Reply Last reply
      0
      • SGaistS SGaist

        Hi,

        Any chance of having something like:

        void MyCoolClass::getUpate()
        {
            Updater updater;
            updater.getToken();
        }
        

        ?

        4 Offline
        4 Offline
        4j1th
        wrote on last edited by
        #9

        @SGaist No luck.

        Pardon my English
        Thank you.

        1 Reply Last reply
        0
        • 4 Offline
          4 Offline
          4j1th
          wrote on last edited by 4j1th
          #10

          @SGaist @mcosta I think I got a clue, In

          void MyCoolClass::getUpate()
          {
               Updater updater;
               updater.getToken();
              
               this->runUpdate();
          }
          

          if I run both then only 'this->runUpdate();' call will work if commented out 'this->runUpdate();' then 'updater.getToken();' works.

          void MyCoolClass::runUpdate()
          {
              
              QNetworkAccessManager *manager = new QNetworkAccessManager(this);
              request.setUrl(QUrl("http://localhost/cdms/pro/index.php/update/linux?version=4.14&"
                                  "lisenceRegis=1&onlineRegis=1"));
          
              QNetworkReply *reply = manager->get(request);
          
              connect(manager, SIGNAL(finished(QNetworkReply*)),
                      this, SLOT(replyFinished(QNetworkReply*)));
          }
          
          
          void CDMS::replyFinished(QNetworkReply * replay)
          {
          
              // Checking replay
              if (replay->isReadable()) {
          
                  // Checking errors
                  if(replay->error() == QNetworkReply::NoError) {
                      QByteArray strreplay = replay->readAll();
          
                      // update ststus check
                      if(strreplay != "0") {
                         } else {
                          ui->statusBar->showMessage("No new updates found", 10000);
          
                          // run update on intervel in 30Minute
                          QTimer::singleShot(1800000, this, SLOT(updateOnlineTimer()));
          
                         
                          // Run update on data and settings
                          //Updater updateCDMSdata;
                          //updateCDMSdata.getToken();
          
                      }
          
                  } else {
                      ui->statusBar->showMessage(replay->errorString(), 10000);
          
                      // run update on intervel in 1Minute
                      QTimer::singleShot(60000, this, SLOT(updateOnlineTimer()));
                  }
              }
          }
          

          I want to call the 'Updater' when the 'runUpdate' download finished.

          Pardon my English
          Thank you.

          1 Reply Last reply
          0
          • jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #11

            You create a local instance of Updater in this method:

            void MyCoolClass::getUpate()
            {
                 Updater updater;
                 updater.getToken();
                
                 this->runUpdate();
            }
            

            As soon as this method finishes updater goes out of scope and is destroyed. That's why nothing is called. You must keep the instance until it finishes its work.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            1
            • 4 Offline
              4 Offline
              4j1th
              wrote on last edited by
              #12

              Replace with this works fine

              void MyCoolClass::getUpate()
              {

               Updater *updateCDMSdata = new Updater;
              
               this->runUpdate();
              

              }

              Pardon my English
              Thank you.

              1 Reply Last reply
              0
              • jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #13

                But now you have a memory leak: you do not delete updateCDMSdata

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #14

                  To add to @jsulm, what does runUpdate do ? Call a function on updateCDMSdata ? If so you are lucky id doesn't crash.

                  If you will be using Updater several times then make it a member of your MyCoolClass object and don't forget to handle its deletion.

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  4 1 Reply Last reply
                  1
                  • SGaistS SGaist

                    To add to @jsulm, what does runUpdate do ? Call a function on updateCDMSdata ? If so you are lucky id doesn't crash.

                    If you will be using Updater several times then make it a member of your MyCoolClass object and don't forget to handle its deletion.

                    4 Offline
                    4 Offline
                    4j1th
                    wrote on last edited by 4j1th
                    #15

                    @SGaist , runUpdate used to update the software and updateCDMSdata used to update data. I want to run data update when there is no software update, first check software update then from the 'finished(QNetworkReply*)' signal data update started.

                    I need to call updater several times, so I think use Updater as a member and delete on MyCoolClass::~MyCoolClass() is a better idea ?

                    Pardon my English
                    Thank you.

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #16

                      Since it's a QObject you can use the parent/child paradigm to let Qt handle the deletion for you.

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      1

                      • Login

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