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

使用Delphi Indy下载OpenStreetMap瓦片失败问题排查

问题排查:Delphi Indy程序下载OSM瓦片突然失效并抛出EIdIOHandlerPropInvalid错误

自2025年9月21日左右,我用Delphi开发的一款Windows程序突然失效——该程序原本通过Indy的TIdHTTP.Get()方法下载在线OpenStreetMap瓦片,此前长期运行正常,但现在有时会抛出EIdIOHandlerPropInvalid错误,提示“IOHandler value is not valid”。

现需排查Delphi环境、Indy库、OpenStreetMap瓦片URL这几方面的变更可能导致此问题。

错误发生在以下代码处:

MemoryStream.Position:= 0;
IdHTTP1.Get(SourceURL, MemoryStream);

程序使用的瓦片URL格式为:
http://{s}.tile.openstreetmap.org/{z}/{x}/{y}(其中s='a')

TIdHTTP组件在单元的initialization和finalization部分创建与销毁,代码如下:

initialization
  IdHTTP1:= TIdHTTP.Create(nil);
  {$ifdef include_TIdSSLIOHandlerSocketOpenSSL}
  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSLIOHandler.SSLOptions.Method := sslvSSLv2;
  SSLIOHandler.SSLOptions.Mode := sslmClient;
  IdHTTP1.IOHandler:= SSLIOHandler;
  {$endif}
  IdHTTP1.HandleRedirects := True;
  Alpha:=  arctan(sinh(Pi));

finalization
  {$ifdef include_TIdSSLIOHandlerSocketOpenSSL}
  SSLIOHandler.Free;
  {$endif}
  IdHTTP1.Free;
end.

该单元编译时使用指令:

{$undef include_TIdSSLIOHandlerSocketOpenSSL}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:12:33