1

我正在使用 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下载任何解决方案
更新 我要下载的文件的url

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

预先感谢

4

2 回答 2

0

您是否尝试将 QNetworkRequest 构造为:

 QNetworkRequest(QUrl(Link))

没有'toEncoded'?

根据此处的示例,您需要使用QUrl::fromEncoded从编码的 url 构造 QUrl,或者简单地跳过所有操作。

于 2017-04-15T19:41:04.447 回答
0

我解决了这个问题,但是因为我在 Web 开发方面有一点经验,所以我不知道为什么会发生
这种情况,当我从普通的 Web 浏览器 firefox 或任何或使用 Internet 下载管理器应用程序下载文件时,链接更改
为:

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

至 :

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

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

于 2017-04-16T14:23:21.270 回答