Créer fichier texte à partir d'un fichier html
-
Bonjour,
Je souhaiterais créer un fichier texte à partir d'un fichier html.
Voici le code, mais il n'y a que quelques lignes obtenues. Merci de m'indiquer s'il y a des erreurs.
Merci beaucoup de votre aide.le h:
code_#ifndef CNETWORK_H #define CNETWORK_H #include <QWidget> #include <QObject> #include <QFile> #include <QMessageBox> #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkRequest> #include <QNetworkReply> #include <QtNetwork> class QNetworkReply; class QNetworkAccessManager; class QString; namespace Ui { class CNetwork; } class CNetwork : public QWidget { Q_OBJECT public: explicit CNetwork(QWidget *parent = 0); ~CNetwork(); void Requette(); public slots: void reponseRecue(QNetworkReply*); private: Ui::CNetwork *ui; QNetworkAccessManager *manager; }; #endif // CNETWORK_Hle cpp:
#include "cnetwork.h" #include "ui_cnetwork.h" CNetwork::CNetwork(QWidget *parent) : manager(new QNetworkAccessManager(this)), QWidget(parent), ui(new Ui::CNetwork) { ui->setupUi(this); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(reponseRecue(QNetworkReply*))); } CNetwork::~CNetwork() { delete ui; } void CNetwork::Requette() { qDebug() << "Nous sommes bien dans le void alerte::requete debut"; manager->get(QNetworkRequest(QUrl("https://google.fr"))); qDebug() << "Nous sommes bien dans le void alerte::requete fin"; } void CNetwork::reponseRecue(QNetworkReply* reply) { if (reply->error() == QNetworkReply::NoError) { QString source = reply->readAll(); qDebug() << source; QFile *donnees = new QFile("C:/DIVERS/test.txt"); // Ouverture en ecriture seule donnees->open(QIODevice::WriteOnly); // Création du flux d'écriture QTextStream ecriture(donnees); // Insertion des lignes avec les sauts ecriture << source ; // Fermeture du fichier donnees->close(); QMessageBox::information(0, tr("Connexion"), tr("Pas d'erreur !")); } else { QMessageBox::information(0, tr("Connexion"), tr("Erreur !")); qDebug() << reply->readAll(); } delete reply; } -
Bonjour,
Dans les choses à corriger:
- Aucune vérification du succès de l'opération
open donneesn'est pas effacé donc il y a fuite de mémoire- Pour la destruction de
reply, il vaut mieux utiliser la méthode deleteLater de l'objet.
Pour ce second point, il est inutile d'allouer sur la mémoire de tas. Vue que c'est une variable à usage uniquement local, l'allouer sur la pile est suffisant.
- Aucune vérification du succès de l'opération
-
Bonjour,
Merci beaucoup de votre réponse. Je vais appliquer vos recommandations;
En fait j'ai résolu mon problème avec l'ajout de code suivant:QString s = "https://google.fr"; QUrl url; url.setUrl(s); QNetworkRequest req(url); req.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); manager->get(req);