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 mcosta
    31 Jan 2016, 16:38

    HI,

    is your request recevied from the running web server?

    What is your environment? (Qt version, OS, ...)

    4 Offline
    4 Offline
    4j1th
    wrote on 31 Jan 2016, 16:58 last edited by
    #5

    @mcosta I test the url on a browser and it worked, it's a LAMP server

    environment : Qt 5.4.1, Ubuntu 12.04

    the same code is run on main window class fine but I can't run the same network request on custom resource/header. I want to write the data updating section code on a different resource/header file.

    Pardon my English
    Thank you.

    1 Reply Last reply
    0
    • 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

                          14/16

                          1 Feb 2016, 08:20

                          • Login

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