Browse Source

Downloader: enable auto following re-directed request

Le Tan 7 years ago
parent
commit
751082c820
1 changed files with 25 additions and 3 deletions
  1. 25 3
      src/vdownloader.cpp

+ 25 - 3
src/vdownloader.cpp

@@ -11,19 +11,37 @@ VDownloader::VDownloader(QObject *parent)
 
 void VDownloader::handleDownloadFinished(QNetworkReply *reply)
 {
+    if (reply->error() != QNetworkReply::NoError) {
+        qWarning() << "download reply error" << reply->error();
+    }
+
     data = reply->readAll();
     reply->deleteLater();
     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)
 {
     if (!p_url.isValid()) {
         return;
     }
 
-    QNetworkRequest request(p_url);
-    webCtrl.get(request);
+    webCtrl.get(networkRequest(p_url));
 }
 
 QByteArray VDownloader::downloadSync(const QUrl &p_url)
@@ -37,12 +55,16 @@ QByteArray VDownloader::downloadSync(const QUrl &p_url)
     QNetworkAccessManager nam;
     connect(&nam, &QNetworkAccessManager::finished,
             [&data, &finished](QNetworkReply *p_reply) {
+                if (p_reply->error() != QNetworkReply::NoError) {
+                    qWarning() << "download reply error" << p_reply->error();
+                }
+
                 data = p_reply->readAll();
                 p_reply->deleteLater();
                 finished = true;
             });
 
-    nam.get(QNetworkRequest(p_url));
+    nam.get(networkRequest(p_url));
 
     while (!finished) {
         VUtils::sleepWait(100);