Downloader: enable auto following re-directed request

This commit is contained in:
Le Tan 2018-09-29 18:38:24 +08:00
parent 574aa4e70a
commit 751082c820

View File

@ -11,19 +11,37 @@ VDownloader::VDownloader(QObject *parent)
void VDownloader::handleDownloadFinished(QNetworkReply *reply) void VDownloader::handleDownloadFinished(QNetworkReply *reply)
{ {
if (reply->error() != QNetworkReply::NoError) {
qWarning() << "download reply error" << reply->error();
}
data = reply->readAll(); data = reply->readAll();
reply->deleteLater(); reply->deleteLater();
emit downloadFinished(data, reply->url().toString()); emit downloadFinished(data, reply->url().toString());
} }
static QNetworkRequest networkRequest(const QUrl &p_url)
{
QNetworkRequest request(p_url);
/*
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::SslV3);
config.setPeerVerifyMode(QSslSocket::VerifyNone);
request.setSslConfiguration(config);
*/
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
return request;
}
void VDownloader::download(const QUrl &p_url) void VDownloader::download(const QUrl &p_url)
{ {
if (!p_url.isValid()) { if (!p_url.isValid()) {
return; return;
} }
QNetworkRequest request(p_url); webCtrl.get(networkRequest(p_url));
webCtrl.get(request);
} }
QByteArray VDownloader::downloadSync(const QUrl &p_url) QByteArray VDownloader::downloadSync(const QUrl &p_url)
@ -37,12 +55,16 @@ QByteArray VDownloader::downloadSync(const QUrl &p_url)
QNetworkAccessManager nam; QNetworkAccessManager nam;
connect(&nam, &QNetworkAccessManager::finished, connect(&nam, &QNetworkAccessManager::finished,
[&data, &finished](QNetworkReply *p_reply) { [&data, &finished](QNetworkReply *p_reply) {
if (p_reply->error() != QNetworkReply::NoError) {
qWarning() << "download reply error" << p_reply->error();
}
data = p_reply->readAll(); data = p_reply->readAll();
p_reply->deleteLater(); p_reply->deleteLater();
finished = true; finished = true;
}); });
nam.get(QNetworkRequest(p_url)); nam.get(networkRequest(p_url));
while (!finished) { while (!finished) {
VUtils::sleepWait(100); VUtils::sleepWait(100);