1、先添加IdSSLIOHandlerSocketOpenSSL1组件
2、你需要这两个核心文件:
libeay32.dllssleay32.dll
3、和你的 .exe 可执行文件放在一起(通常是 Project1\Win32\Debug 或 Release 文件夹)。
4、通常禁用了旧的加密协议,所以你必须告诉 TIdHTTP 使用 TLS 1.2,否则即使加载了 DLL 也可能连接失败。
5、源码如下:
#include <IdHTTP.hpp>
TStringList *Clist = new TStringList;
TIdHTTP *IdHTTP1 = new TIdHTTP(NULL);
//TIdSSLIOHandlerSocketOpenSSL *IdSSLIOHandlerSocket1 = new TIdSSLIOHandlerSocketOpenSSL(NULL);
try
{
// 1. 配置 SSL 处理器
IdHTTP1->IOHandler = IdSSLIOHandlerSocketOpenSSL1; // 将 SSL 处理器挂载到 HTTP 组件上
// 2. 设置 SSL 版本 (关键!必须启用 TLS 1.2,否则很多 HTTPS 网站连不上)
// 在 C++ Builder 中,通常使用 ssloTLSv1_2
IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Method = sslvTLSv1_2;
// 3. 设置超时时间 (可选,防止网络卡死)
IdHTTP1->ConnectTimeout = 5000;
IdHTTP1->ReadTimeout = 5000;
// 4. 开始下载
// 如果这里还报错,说明 DLL 没放对位置
Clist->Text = IdHTTP1->Get("https://data.17500.cn/kl8_asc.txt");
Memo3->Lines->Assign(Clist);
delete IdHTTP1;
delete Clist;
}
catch (Exception &e)
{
// 捕获错误信息
ShowMessage("错误: " + e.Message);
}
//__finally
//{
// //delete IdSSLIOHandlerSocket1; // 记得释放 SSL 处理器
// delete IdHTTP1;
// delete Clist;
//}