QNetworkReply* NetworkAccess::simpleGet(QUrl url, int operation) { QNetworkAccessManager *manager = new QNetworkAccessManager(this); QNetworkRequest request(url); request.setRawHeader("User-Agent", USER_AGENT.toUtf8()); request.setRawHeader("Connection", "Keep-Alive"); QNetworkReply *networkReply; switch (operation) { case QNetworkAccessManager::GetOperation: qDebug() << "GET" << url.toEncoded(); networkReply = manager->get(request); break; case QNetworkAccessManager::HeadOperation: qDebug() << "HEAD" << url.toEncoded(); networkReply = manager->head(request); break; default: qDebug() << "Unknown operation:" << operation; return 0; } // error handling connect(networkReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error(QNetworkReply::NetworkError)), Qt::QueuedConnection); return networkReply; }
QNetworkReply* NetworkAccess::manualGet(QNetworkRequest request, int operation) { QNetworkAccessManager *manager = The::networkAccessManager(); // manager->setCookieJar(new QNetworkCookieJar()); QNetworkReply *networkReply; switch (operation) { case QNetworkAccessManager::GetOperation: // qDebug() << "GET" << request.url().toEncoded(); networkReply = manager->get(request); break; case QNetworkAccessManager::HeadOperation: // qDebug() << "HEAD" << request.url().toEncoded(); networkReply = manager->head(request); break; default: qDebug() << "Unknown operation:" << operation; return 0; } // error handling connect(networkReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error(QNetworkReply::NetworkError))); return networkReply; }
void DownloadManager::startDownloadCheckCache( QUrl url, QString fileName) { localFileName = fileName; QNetworkAccessManager *headerNam = new QNetworkAccessManager(this); QNetworkReply *headerReply = headerNam->head(QNetworkRequest(url)); connect(headerNam, SIGNAL(finished(QNetworkReply*)), this, SLOT(gotHeaderSlot(QNetworkReply*))); }
//用阻塞的方式获取下载文件的长度 qint64 TcDownloadList::GetFileSize(QUrl url) { QNetworkAccessManager manager; //qDebug() << "Getting the file size..."; QEventLoop loop; //发出请求,获取目标地址的头部信息 QNetworkReply *reply = manager.head(QNetworkRequest(url)); QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()), Qt::DirectConnection); loop.exec(); QVariant var = reply->header(QNetworkRequest::ContentLengthHeader); reply->deleteLater(); qint64 size = var.toLongLong(); //qDebug() << "The file size is: " << size; return size; }
std::pair<QNetworkReply::NetworkError, QString> NetworkProxyDialog::testProxyConnection(const QNetworkProxy &t_proxy, QWidget *t_parent) { QProgressDialog dlg("Verifying Proxy Connection", "Cancel",0, 1000, t_parent); dlg.setWindowModality(Qt::WindowModal); dlg.setValue(0); dlg.setMinimumDuration(1000); QNetworkAccessManager nam; nam.setProxy(t_proxy); QNetworkReply *head = nam.head(QNetworkRequest(QUrl("https://bcl.nrel.gov/"))); if (!head) return std::make_pair(QNetworkReply::UnknownNetworkError, QString("Unknown error creating connection to proxy.")); boost::posix_time::ptime start = boost::posix_time::microsec_clock::universal_time(); while ( !head->isFinished() && (boost::posix_time::microsec_clock::universal_time() - start).total_milliseconds() < 10000 && !dlg.wasCanceled()) { int time = (boost::posix_time::microsec_clock::universal_time() - start).total_milliseconds(); dlg.setValue(time); if (time >= 950 && dlg.maximum() < 10000) { dlg.setMaximum(10000); } } dlg.reset(); Application::instance().processEvents(); head->deleteLater(); if (!head->isFinished()) { head->abort(); return std::make_pair(QNetworkReply::TimeoutError, QString("Timed out while attempting to verify proxy connection")); } LOG(Debug, " errorString from proxy test " << toString(head->errorString()) << " " << head->error()); return std::make_pair(head->error(), head->errorString()); }