#include "http_download.h" HttpDownload::HttpDownload(QObject *parent, QString url, QString download_path) : HttpDownload(parent, new QNetworkAccessManager(parent), url, download_path) {} HttpDownload::HttpDownload(QObject *parent, QNetworkAccessManager* net_manager, QString url, QString download_path) : QObject(parent) { m_net_manager = net_manager; m_url = QUrl::fromEncoded(url.toLocal8Bit()); m_download_path = download_path; m_net_request = QNetworkRequest(m_url); m_net_request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); connect(m_net_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(OnFinished(QNetworkReply*))); } HttpDownload::~HttpDownload() { } void HttpDownload::Download() { m_net_reply = m_net_manager->get(m_net_request); //connect(m_net_reply, SIGNAL(finished()), this, SLOT(OnFinished())); connect(m_net_reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(OnDownloadProgress(qint64, qint64))); connect(m_net_reply, SIGNAL(redirected(const QUrl &)), this, SLOT(OnRedirected(const QUrl &))); } void HttpDownload::OnFinished(QNetworkReply* reply) { //QMessageBox msgBox; //msgBox.setText(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString()); //msgBox.exec(); } void HttpDownload::OnSslErrors(QList& ssl_errors) { } void HttpDownload::OnDownloadProgress(qint64 bytes_received, qint64 bytes_total) { TRACE(L"%ld out of %ld\n", bytes_received, bytes_total); } void HttpDownload::OnError(QNetworkReply::NetworkError error_code) { } void HttpDownload::OnRedirected(const QUrl &url) { m_net_request = QNetworkRequest(url); QMessageBox msgBox; msgBox.setText(url.toString()); msgBox.exec(); Download(); }