我有以下任务:使用 HTTPS 和身份验证下载文件。Indy 似乎是要走的路,但由于某种原因,它到目前为止还行不通。我有以下内容:
- 我用于下载的 TIdHTTP 组件
- 用于创建 URL 的 TIdURI 组件
- 应该提供安全连接的 TIdSSLIOHandlerSocketOpenSSL 组件。所需的 DLL 位于二进制文件夹中。
该站点还需要身份验证,我在 URL 中包含了用户/密码,如下例所示。简而言之,这是代码:
URI := TIdURI.Create('https://test.example.com/');
URI.Username := ParamUserName;
URI.Password := ParamPassword;
HTTP := TIdHTTP.Create(nil);
if URI.Protocol = 'https' then
begin
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IOHandler.SSLOptions.Method := sslvSSLv3;
HTTP.IOHandler := IOHandler;
end;
HTTP.Get(URI.GetFullURI([ofAuthInfo]), FileStream);
使用此代码,我非常快地得到“读取超时”EIdReadTimeout 异常。在浏览器中测试 URL 没有问题。关于缺少什么或我做错了什么的任何想法?