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.2k 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 last edited by
    #4

    HI,

    is your request recevied from the running web server?

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

    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
    0
    • M mcosta

      HI,

      is your request recevied from the running web server?

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

      4 Offline
      4 Offline
      4j1th
      wrote on 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 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
        0
        • 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