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();
}
}
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.
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.
× 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.