我在Dropbox上使用版本字符串創建公共txt文件,例如2017.09.01
。我用捲曲測試了下載使用Qt下載公共收件箱文件
curl -v -L http://www.dropbox.com/s/ehoawgm89yz6pib/version.txt?raw=1
它確實有效。它需要-L
進行重定向。我不知道很多關於捲曲,但我確實看到重定向HTTP/2 302
那麼正常請求
< HTTP/2 200
< content-disposition: inline; filename="version.txt"; filename*=UTF-8''version.txt
< ...
<
2017.09.01
* Connection #1 to host dl.dropboxusercontent.com left intact
然後我試圖使用Qt有一個非常簡單的請求類,類似:
MyClass::MyClass()
{
auto manager = new QNetworkAccessManager(this);
QNetworkRequest request(checkURL);
connect(manager, &QNetworkAccessManager::finished,
this, &MyClass::replyFinished);
m_Reply = manager->get(request);
}
void MyClass::replyFinished(QNetworkReply *reply)
{
QUrl redirect =
reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
if (redirect.isValid() && reply->url() != redirect)
{
if (redirect.isRelative())
{
redirect = reply->url().resolved(redirect);
}
reply->manager()->get(QNetworkRequest(redirect));
return;
}
const auto newVersion = QString(reply->readAll());
// Do something with the version
}
在調試運行,我看到重定向,它再次調用replyFinished
,但readAll
上沒有任何內容。總是一個空的字符串。
在發佈答案之前,請用我提供的鏈接測試!我的代碼已經適用於大多數其他鏈接。
檢查[this out](http://www.bogotobogo.com/Qt/Qt5_Downloading_Files_QNetworkAccessManager_QNetworkRequest.php)。我測試了這個例子並直接工作。不與你的鏈接,但它與其他鏈接。 – apalomer
在問我的問題之前,我讀了這個例子。我的代碼也適用於其他鏈接。 – Nil
我已經嘗試了評論@apalomery的代碼,並且如果你下載了你提到的文件。 – eyllanesc