【发布时间】:2013-02-08 22:58:32
【问题描述】:
我尝试过 Synapse、Indy 和 ICS,但我对它们不满意。我想同时下载多个部分的多个文件,支持恢复、gzip 编码的文件、cookie、使用 POST 登录网站等。所以我想我会用套接字写。 但我看到 Delphi 中有很多可用的套接字:TTcpClient、TRawSocket、TCGIRequest、TClientSocket 等等。它们都没有完整的文档记录——很难找到使用示例。我尝试使用 TTcpClient 但有时程序会冻结然后超时,我不知道为什么。等待回复时似乎有问题。这肯定不是服务器问题,因为我在 localhost 上进行了测试。 用于 HTTP 协议的最佳套接字是什么?好用吗?
我想在 Delphi 7 和 XE2 中都使用。我不想使用 WinAPI 之类的任何东西,所以我不必处理 PChars 和其他非 Delphi 的东西。
我正在考虑类似的东西:
1) 完全符合我的要求 - 在同一个文件中下载多个带有多个文件进度条的片段
或
2) 类似 telnet- 所以我只是将 HTTP 命令编写为字符串,然后我得到字节数组作为回报,我可以将其转换为字符串或保存到 tstreams 中。
【问题讨论】:
-
试试 WinInet。 Delphi 完全支持它;它不需要任何附加组件。它可能非常适合您的目的:cryer.co.uk/brian/delphi/wininet.htm
-
印地有什么问题?还是异步 ICS(可能更适合并行文件下载)?
-
更进一步,您使用的是什么版本的 Delphi?
TClientSocket现在已经过时了,即使在旧版本的 Delphi 中支持,仍然强烈建议不要考虑使用它们。 Delphi 版本对于这样的问题很重要。更不用说这首先对 StackOverflow 来说不是一个合适的问题。 -
“我应该使用什么”对于 S/O 来说是一个糟糕的问题,“易于使用的东西”更糟糕,它是主观的。两者结合在一起是一个可怕的问题。
-
@Tom:TIdHTTP 支持你所要求的一切,你只需要知道如何使用它。详情见我的回答。