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

QNetworkAccessManager finished signal error

Scheduled Pinned Locked Moved General and Desktop
qnetworkaccessmsignals emit
16 Posts 5 Posters 7.8k Views
  • 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.
  • C ccleung

    You should connect the readyRead() and error() signals of QNetworkReply *replay.

    Please see the documentation: http://doc.qt.io/qt-5/qnetworkaccessmanager.html

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

    @ccleung but I don't get any signals

    Pardon my English
    Thank you.

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