使用QNetworkAcessManager通过直接链接下载文件

时间:2017-04-15 17:33:57

标签: c++ qt curl qnetworkaccessmanager qt5.8

我正在使用QNetworkAcessManager从这里的链接直接链接下载pdf文件 但它没有下载任何东西和QByteArray大小是0我尝试在另一个MP3文件和许多其他链接,它工作正常,但我想知道为什么这个链接无法下载我尝试使用Curl下载它和同样的问题 所以我尝试在java中这样做,但它给了我一个错误

 Exception in thread "main" java.net.MalformedURLException: no protocol: www.proz.com/ht/profile_resources/022198_r4551c465d7a53.doc

当我搜索这个错误时,解决它就是对它进行编码,所以我再次回来并在Qt中进行编码并使用此编码URL

//using QUrl To endcode the link
reply = manager->get(QNetworkRequest(QUrl(QUrl(Link).toEncoded())));
connect(reply, SIGNAL(readyRead()), this, SLOT(CollectFile()));
connect(reply, SIGNAL(finished()), this, SLOT(DocDownloaded()));

但是编码之后java和Qt都存在同样的问题,所以这个问题是什么以及为什么它不能使用QNetworkacessManager或使用Curl下载任何解决方案 的更新 我要下载的文件的网址

http://www.proz.com/ht/profile_resources/009424_r57075c01ae812.pdf

提前感谢

2 个答案:

答案 0 :(得分:0)

您是否尝试将QNetworkRequest构建为:

 QNetworkRequest(QUrl(Link))

没有'toEncoded'?

根据示例here,您需要使用QUrl::fromEncoded从编码网址中构建QUrl,或者只是跳过所有操作。

答案 1 :(得分:0)

我解决了这个问题,但因为我在网络开发方面有一点经验,所以我不知道为什么会这样 当我从普通网络浏览器firefox或任何或使用互联网下载管理器应用程序下载文件时,我解决了这个问题 来自:

http://www.proz.com/ht/profile_resources/009424_r57075c01ae812.pdf

到:

http://cdn3.proz.com/profile_resources/009424_r57075c01ae812.pdf

因此,当我复制第二个链接时,它现在可以从我的应用程序或使用Curl下载,但是不知道对此的解释,所以如果有人可以帮助并解释这个,为什么会发生这种情况,并且链接在我更改时更改在互联网下载管理器,并给我新的链接,我将不胜感激 这是我如何解决问题,但没有解释为什么会发生这种情况