Я хочу получить URL "https://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/5.11/5.11.1/qt-opensource-windows-x86-5.11.1.exe" длина файла с Qt,
но запрос QNetworkAccessManager не может получить Content-Length。 содержимое равно
<html><head><script>document.cookie="addr=113.57.128.130";setTimeout("location.reload();", 2);</script></head><body>This page requires JavaScript. Please wait 2 seconds. </body></html>
если я добавлю cookie="addr=113.57.128.130" к запросу вручную, я могу получить правильные данные。 что мне делать, чтобы получить длину файла?
cookie="addr=113.57.128.130"
Попробуйте этот пример:
widget.h
public: void requestFileSize(const QString &url); QNetworkAccessManager *m_netmanager; QNetworkReply *m_reply; public slots: void fileSize();
widget.cpp
void Widget::requestFileSize(const QString &url) { QNetworkRequest req; m_netmanager = new QNetworkAccessManager(this); req.setUrl(QUrl(url)); m_reply = m_netmanager->get(req); connect(m_reply, SIGNAL(metaDataChanged()), this, SLOT(fileSize())); } void Widget::fileSize() { qDebug() << "Content Length: " << m_reply->header(QNetworkRequest::ContentLengthHeader).toString(); m_reply->deleteLater(); m_netmanager->deleteLater(); }
Теперь звоните:
requestFileSize("https://as5.cdn.asset.aparat.com/aparat-video/c6f1e63e310060e70574f1692c2322395584619-360p__37462.mp4");
Вывод в байтах:
Content Length: "12186677"
А это примерно 11.6 MB
11.6 MB
Я проверяю это с некоторыми url с, но я не знаю, почему с этим url https://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/5.11/5.11.1/qt-opensource-windows-x86-5.11.1.exe всегда возвращают 0.
url
0