Скачивание файла с https в Qt

Всем привет. Очень сильно прошу помощи в подробной инструкции, как сделать поддержку https для моего приложения. Мне просто по ссылке нужно скачать файлик и всё. Так как поддержки нету, то программа качает тот же файл, но внутри обычный html код.

Вот код приложения:

.pro

QT       += core gui network
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = DownloadEQFirmware
TEMPLATE = app
 
DEFINES += QT_DEPRECATED_WARNINGS
 
SOURCES += \
        main.cpp \
        mainwindow.cpp
 
HEADERS += \
        mainwindow.h
 
FORMS += \
        mainwindow.ui

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QUrl>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFile>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
 
    QUrl urlStandard3N;
    QNetworkAccessManager *firmwareManager;
 
public slots:
    void downloadFirmware();
    void downloadFirmwareFile(QNetworkReply *reply);
};
 
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    firmwareManager = new QNetworkAccessManager();
 
    connect(ui->btn_download, &QPushButton::clicked, this, &MainWindow::downloadFirmware);
    connect(firmwareManager, &QNetworkAccessManager::finished, this, &MainWindow::downloadFirmwareFile);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::downloadFirmware()
{
    urlStandard3N = "http://www.eqdrive.com.ua/files/Updates/Standard3N/EQD4.6.0.1397.eqh";
 
    QNetworkRequest requestToUpdateStandard3N;          // Отправляемый запрос
    requestToUpdateStandard3N.setUrl(urlStandard3N);    // Устанавлвиваем URL в запрос
    firmwareManager->get(requestToUpdateStandard3N);    // Выполняем запрос
}
 
void MainWindow::downloadFirmwareFile(QNetworkReply *reply)
{
    if(reply->error()) {
        qDebug() << "reply error: " << reply->errorString();
    } else {
        QFile file("EQD4.6.0.1397.eqh");
        if(file.open(QFile::WriteOnly)) {
            file.write(reply->readAll());
            file.close();
        }
    }
}

Очень сильно нужна Ваша помощь


Ответы (1 шт):

Автор решения: Александр

В Вашем случае необходимо установить аттрибут QNetworkRequest::FollowRedirectsAttribute

void MainWindow::downloadFirmware()
{
    urlStandard3N = "http://www.eqdrive.com.ua/files/Updates/Standard3N/EQD4.6.0.1397.eqh";

    QNetworkRequest requestToUpdateStandard3N;          // Отправляемый запрос
    requestToUpdateStandard3N.setUrl(urlStandard3N);    // Устанавлвиваем URL в запрос
    requestToUpdateStandard3N.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
    firmwareManager->get(requestToUpdateStandard3N);    // Выполняем запрос
}
→ Ссылка