0

我正在尝试在 QT 上获取网页。我想在一个类上做这个获取操作。然而,我在 startRequest 函数中的 readyread 信号没有发出。我无法获取任何数据。此代码创建 HTML 文件,但不向其中写入任何内容。

#include "fetchoperation.h"
#include <QtWidgets>
#include <QtNetwork>
#include <QUrl>
#include <QTextBrowser>
#include <iostream>    
using namespace std;
fetchoperation::fetchoperation()
{

}
void fetchoperation::downloadFile(QUrl geturl,QString th)
{
    page=th;
    qnam = new QNetworkAccessManager();
    url=geturl;
    QFileInfo fileInfo(url.path());
    QString fileName = fileInfo.fileName();
    fileName = "C:/yunus/"+page+".html";
    file = new QFile(fileName);
    file->open(QIODevice::WriteOnly);
    startRequest(url);


}
void fetchoperation::httpReadyRead()
{
    if (file)
        file->write(reply->readAll());
}
void fetchoperation::httpDownloadFinished()
{   
    file->flush();
    file->close();

    QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
             QString fileName = QFileInfo(QUrl(url).path()).fileName();

         reply->deleteLater();
         reply = 0;
         delete file;
         file = 0;
        QDesktopServices::openUrl(QUrl::fromLocalFile("C:/yunus/"+page+".html"));
}
void fetchoperation::startRequest(QUrl url)
{   

    reply = qnam->get(QNetworkRequest(url));

    connect(reply,&QNetworkReply::readyRead,
            this,&fetchoperation::httpReadyRead);

    connect(reply,&QNetworkReply::finished,
            this,&fetchoperation::httpDownloadFinished);
}
4

0 回答 0