Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt problème de connexion internet

Sujet résolu
    7 juin 2008 à 20:43:16

    Bonsoir,
    voilà j'ai un soucis. J'ai fais une classe qui vérifie les mises à jours mon soucis maintenant est que la connexion foire à chaque fois et e ne sais pas pourquoi.
    Voici le code :

    #ifndef H_UPDATE_H
    #define H_UPDATE_H
    
    #include <QtCore>
    #include <QtGui>
    #include <QWidget>
    #include <QtNetwork>
    #include <QHttp>
    #include <QBuffer>
    #include <QXmlStreamReader>
    #include <QMessageBox>
    #include <QTime>
    
    #include "../index.h" // definition de la version et de l'url où est le numéro de version.
    
    class Update : public QWidget
    {
    	Q_OBJECT
    	
    	public:
    		Update(QWidget *parent=0);
    
    	private slots:
    		void fetch();
    		void readData(const QHttpResponseHeader &resp);
    		void finished(int , bool );
    	
    	private:
    		void parseXml();
    
    	    QXmlStreamReader xml;
    	    QString versionString, currentTag;
    	    QHttp http;
    	    int connectionId;
    
    };
    
    #endif
    

    #include "update.h"
    
    Update::Update(QWidget *parent) : QWidget(parent), currentTag("version")
    {
    	fetch();
        connect(&http, SIGNAL(readyRead(const QHttpResponseHeader &)),
                  this, SLOT(readData(const QHttpResponseHeader &)));
        connect(&http, SIGNAL(requestFinished(int, bool)),
                  this, SLOT(finished(int, bool)));
    }
    
    void Update::fetch()
    {
        xml.clear();
        QUrl url(URLv); // l'url y est bien j'ai regarder grace à la console (URLv est un #define) 
    
        http.setHost(url.host(), 80);
        connectionId = http.get(url.path());
    }
    
    void Update::readData(const QHttpResponseHeader &resp)
    {
        if (resp.statusCode() != 200) {
             http.abort();
    	}
        else {
             xml.addData(http.readAll());
             parseXml();
        }
    }
    
    void Update::finished(int id, bool error)
    {
        if (error) {
            qWarning() << "Erreur lors de la recuperation des donnees http. (mise a jour)";
        }
    }
    
    void Update::parseXml()
    {
        while (!xml.atEnd()) {
            xml.readNext();
    
    		if (xml.isCharacters() && !xml.isWhitespace()) {
                if (currentTag == "version")
    				versionString = xml.text().toString();
    			
    			if(versionString != VERSION) {
    				QMessageBox::information (this,
                                			  tr("Mises à jours"), 
    										  QString("<font style=\"font-size: 14px;\"><b>Une nouvelle version</b> du programme est disponible. <br />  Si vous souhaitez la télécharger, veuillez vous rendre sur le site.</font>"));
    			return;
    			} // if new version
    	    }
        } // while
    	
        if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) {
            qWarning() << "XML ERROR : " << xml.lineNumber() << ": " << xml.errorString();
            http.abort();
        }
    
    }
    


    Merci de votre aide. :)
    • Partager sur Facebook
    • Partager sur Twitter
    :)
      10 juin 2008 à 0:03:11

      Salut

      Citation : moii

      Bonsoir,
      voilà j'ai un soucis. J'ai fais une classe qui vérifie les mises à jours mon soucis maintenant est que la connexion foire à chaque fois et e ne sais pas pourquoi.


      Que veut tu dire par "la connection foire" ??
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2008 à 0:07:40

        Je viens de le résoudre il y a quelques minutes. En faite il ne se connectais pas au site pour ouvrir un fichier xml le lire et comparer le numéro de version dans le logiciel et celui dans le fichier xml.
        En faite il ne faut pas mettre fetch dans le constructeur mais faire un appel direct.

        Update *test = new Update;
        test->fetch();
        

        et c'est tout voilà.
        MErci.
        • Partager sur Facebook
        • Partager sur Twitter
        :)
          10 juin 2008 à 8:58:24

          tu est epiphone?
          http://forum.qtfr.org/viewtopic.php?id=6590&p=1

          Si tu utilise QT4.4, tu devrait regarder qnetworkaccessmanager
          http://doc.trolltech.com/4.4/qnetworka [...] .html#details
          pour telecharger
          • Partager sur Facebook
          • Partager sur Twitter

          Qt problème de connexion internet

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown