Créer fichier texte à partir d'un fichier html
Solved
French
-
wrote on 18 Jan 2020, 17:45 last edited by
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_H
le 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
donnees
n'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
-
wrote on 24 Jan 2020, 13:45 last edited by
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);
-
This post is deleted!