c++ - Qt 无法使用 QNetworkAccessManager 下载文件

标签 c++ qt http qnetworkaccessmanager qnetworkreply

在我的项目中,我需要下载一个简单的.txt 文件。我创建了一个函数来根据 url 下载文件:

void MainWindow::downloadFile(const QString &url, const QString &aPathInClient)
{
    QNetworkAccessManager* m_NetworkMngr = new QNetworkAccessManager(this);
    QNetworkReply *reply = m_NetworkMngr->get(QNetworkRequest(QUrl(url)));
    QEventLoop loop;
    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();
    QUrl aUrl(url);
    QFileInfo fileInfo=aUrl.path();

    QFile file(aPathInClient+"\\"+fileInfo.fileName());
    file.open(QIODevice::WriteOnly);
    file.write(reply->readAll());
    delete reply;
}

当我的程序运行时,会使用正确的文件名创建文件,但该文件是空的。如果连接到网页,我的程序只能获取文件名。我忘记了什么?我在构建时没有遇到任何错误,并且已经包含了所有必要的库。

谢谢:)

编辑:

一切都很好,我的问题是我的链接使用了 https 而不是 http。

最佳答案

我从未使用过“write”函数来写入QFile。尝试以下方法:

QFile file(aPathInClient+"\\"+fileInfo.fileName());
file.open(QIODevice::WriteOnly);
QTextStream out(&file);
out << "This file is generated by Qt\n";

编辑:以上只是检查文件是否正确写入。现在已经验证完毕,您可以尝试:

out << reply->readAll();

关于c++ - Qt 无法使用 QNetworkAccessManager 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614932/

相关文章:

c++ - 为什么动态内存分配(堆)出现运行时错误?

c++ Qt Qwt构建问题

c++ - QT 无法正确处理循环中的事件

windows - 为什么特定站点上的 HTTP/2 在 FF 中有效,但在同一台 Windows 10 计算机上的 Chrome、IE 和 Edge 中却无效?

C++ 内存垃圾处理

c++ - 模板类型函数的延迟评估

c++ - 为什么 C++ 不使用父类构造函数?

c++ - 如何在 Qt 中做一个扩展到他的布局之上的小部件

Angular 2 从 http.get 请求中丢失数据

python - 找到在 Robinhood 上获取比特币价格的 api 调用