Qt Не могу скачать файл с помощью QNetworkAccessManager

0

В моем проекте мне нужно загрузить простой.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.

  • 0
    Попробуйте написать известный строковый литерал вместо reply-> readAll ()
  • 0
    Я никогда не использовал строковые литералы. Можно ли получить быстрый пример?
Показать ещё 1 комментарий
Теги:
qt
http
qnetworkreply
qnetworkaccessmanager

1 ответ

0

Я никогда не использовал функцию write для записи в QFile. Попробуйте использовать следующий подход:

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

EDIT: Выше было просто проверить, правильно ли записывается файл. Теперь, когда он был проверен, вы можете попробовать:

out << reply->readAll();
  • 0
    Сейчас я тестирую его, но мне интересно, как он узнал, как получить файл из ответа?
  • 0
    Все, что было написано, было "Этот файл сгенерирован Qt"
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню