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 7.9k 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.
  • M Offline
    M Offline
    mcosta
    wrote on 31 Jan 2016, 20:41 last edited by
    #6

    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?

    Once your problem is solved don't forget to:

    • Mark the thread as SOLVED using the Topic Tool menu
    • Vote up the answer(s) that helped you to solve the issue

    You can embed images using (http://imgur.com/) or (http://postimage.org/)

    4 1 Reply Last reply 1 Feb 2016, 02:05
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 31 Jan 2016, 20:50 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 1 Feb 2016, 02:07
      0
      • M mcosta
        31 Jan 2016, 20:41

        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 1 Feb 2016, 02:05 last edited by 4j1th 2 Jan 2016, 02:06
        #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
        • S SGaist
          31 Jan 2016, 20:50

          Hi,

          Any chance of having something like:

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

          ?

          4 Offline
          4 Offline
          4j1th
          wrote on 1 Feb 2016, 02:07 last edited by
          #9

          @SGaist No luck.

          Pardon my English
          Thank you.

          1 Reply Last reply
          0
          • 4 Offline
            4 Offline
            4j1th
            wrote on 1 Feb 2016, 02:28 last edited by 4j1th 2 Jan 2016, 02:29
            #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
            • J Offline
              J Offline
              jsulm
              Lifetime Qt Champion
              wrote on 1 Feb 2016, 05:32 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 1 Feb 2016, 07:04 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
                • J Offline
                  J Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 1 Feb 2016, 07:22 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
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 1 Feb 2016, 08:20 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 Feb 2016, 10:05
                    1
                    • S SGaist
                      1 Feb 2016, 08:20

                      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 1 Feb 2016, 10:05 last edited by 4j1th 2 Jan 2016, 10:11
                      #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
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 1 Feb 2016, 16:39 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

                        15/16

                        1 Feb 2016, 10:05

                        • Login

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