You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yellowfin Delphi API集成:RESTRequest右键正常但代码执行连接失败

解决Delphi中RESTRequest代码执行连接失败(12029)的问题

以下是针对你遇到的「设计时右键执行RESTRequest正常,代码调用RESTRequest1.Execute却报12029连接失败」问题的排查方向和解决方法:

  • 核对运行时的BaseURL配置
    设计时IDE使用的是静态配置,但程序运行时可能存在代码覆盖BaseURL、变量未替换(比如环境变量、动态拼接路径)的情况。在Execute前添加日志或弹窗确认当前URL:

    ShowMessage(RESTClient1.BaseURL); // 对比设计时的URL是否完全一致
    

    若不一致,检查是否有其他代码修改了RESTClient1.BaseURL,确保运行时URL和设计时完全匹配。

  • 统一代理设置
    IDE和Postman可能自动使用系统代理,而Delphi程序默认可能未启用。开启系统代理支持:

    RESTClient1.ProxySettings.UseSystemProxy := True;
    

    若Yellowfin服务器需要自定义代理,手动配置ProxySettings的Server、Port、Username和Password属性。

  • 修复SSL/TLS版本兼容性
    设计时IDE的SSL库可能支持更高版本的TLS,而程序运行时默认配置无法匹配Yellowfin服务器的要求。手动指定TLS版本:

    if Assigned(RESTClient1.SSLIOHandler) and (RESTClient1.SSLIOHandler is TIdSSLIOHandlerSocketOpenSSL) then
    begin
      with TIdSSLIOHandlerSocketOpenSSL(RESTClient1.SSLIOHandler).SSLOptions do
      begin
        SSLVersions := [sslvTLSv1_2, sslvTLSv1_3];
      end;
    end;
    

    同时确保程序目录下存在对应Indy版本的SSL动态库(如libcrypto-1_1-x64.dll、libssl-1_1-x64.dll),版本过低会导致SSL握手失败。

  • 排查权限与防火墙拦截
    程序运行时的权限可能低于IDE,导致被系统防火墙或杀毒软件拦截。尝试:

    • 以管理员身份运行程序
    • 在系统防火墙中添加程序的网络访问允许规则
    • 临时关闭杀毒软件测试是否恢复正常
  • 确认执行模式为同步
    若代码中误设置了异步执行,可能引发连接问题。确保调用的是同步执行方法:

    RESTRequest1.Execute; // 不带Async参数,确保同步执行
    

    若使用异步模式,需正确绑定OnExecuteComplete事件处理结果,避免因异步逻辑未处理导致的异常。

内容的提问来源于stack exchange,提问作者Japster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:52:18