使用 Delphi 在 TIdHttp 中的文件下载问题

Posted

技术标签:

【中文标题】使用 Delphi 在 TIdHttp 中的文件下载问题【英文标题】:File download issue in TIdHttp using Delphi 【发布时间】:2016-02-03 03:04:09 【问题描述】:

我正在使用 Delphi 10 Seattle 开发 android 移动应用程序和桌面应用程序。根据要求,我需要下载 Mp3 文件(可能是 1 到 5 MB)并需要将文件保存在使用 Delphi 创建的移动应用程序中。 通过使用 IIS,我将路径设为公开,并且可以在任何地方访问该文件。并且服务器系统的上传速度为512 Kbps,下载速度为1Mbps。 现在我正在尝试使用 TIdHttp 将文件文件从服务器下载到移动设备。

如果我在 Wifi 中使用我的移动应用程序(下载速度:8 Mbps,上传速度:2 Mbps),则文件正在正确下载。

但是当我使用移动数据(3g, 下载速度:4 Mbps,上传速度:260 Kbps),文件未正确下载,异常显示为“读取超时”。此外,我已将 ReadTimeout 增加到 9999999。然后,文件也没有被下载。另外,当我尝试在 Google chrome 中打开链接时。然后,文件也没有播放。

是否需要提高系统的上传速度或者修改代码才能正常下载。

提前致谢。

【问题讨论】:

我怀疑 IIS 在这方面表现不佳。 我昨天在Embarcadero forums 中讨论了同样的问题。 【参考方案1】:
    System.Net.HttpClient 尝试现代组件THTTPClient。 您可以通过网络浏览器下载您的文件吗?只是为了确保 IIS 配置正确。

【讨论】:

1.我们可以在 Firemonkey android 中使用 THttpClient 吗?当然我会使用这个组件并进行测试。 2. 如果我在手机中使用高速互联网,则文件将在浏览器中打开。如果我使用的是低速互联网,则文件未在浏览器中打开。我的服务器下载速度为 1 Mbps,上传速度为 512 Kbps。这是导致问题的原因吗 @test12345 -- 是的,THTTPClient 在 Android 4、MacOS 10 和 WIn32/64 平台上运行良好。我向你保证:) @test12345 -- 最重要 -- SSL 连接不需要 OpenSSL 库。【参考方案2】:

重新启动服务器系统后,我也可以使用慢速互联网下载文件。谢谢大家的建议。

【讨论】:

以上是关于使用 Delphi 在 TIdHttp 中的文件下载问题的主要内容,如果未能解决你的问题,请参考以下文章

Delphi - Indy TIdHTTP方式创建程序外壳 - 实现可执行程序的自动升级

Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题

Delphi IDHTTP控件:GET/POST 请求

delphi中使用HTTP控件,怎么使用POST的异步方式

Delphi IDHTTP控件:GET/POST 请求

Delphi IDHTTP控件:GET/POST 请求