我想下载 JSON 信息
idHTTP := TIdHTTP.Create(nil);
JSON:=idHTTP.get('https://login.microsoftonline.com/common/.well-known/openid-configuration');
并出现错误
10054 对端重置连接
. 在浏览器中下载有效。
我该如何着手发现该问题?
我想下载 JSON 信息
idHTTP := TIdHTTP.Create(nil);
JSON:=idHTTP.get('https://login.microsoftonline.com/common/.well-known/openid-configuration');
并出现错误
10054 对端重置连接
. 在浏览器中下载有效。
我该如何着手发现该问题?
10054 表示 TCP 连接在远端被突然重置。
您正在尝试从加密的 HTTPS URL 下载,因此您需要为该属性分配一个
TIdSSLIOHandlerSocketBase
-derived 组件(例如TIdSSLIOHandlerSocketOpenSSL
)TIdHTTP.IOHandler
。但是,您似乎没有这样做。如果您使用的是最新版本的 Indy,则在请求 HTTPS URL 时如果未分配,
TIdHTTP
则会引发异常。但是,如果您使用的是旧版本的 Indy(您没有指出)并且未进行该检查,则可能会创建 TCP 连接,然后服务器在未收到 TLS 握手时立即重置连接。EIdIOHandlerPropInvalid
SSLIOHandler
TIdHTTP
如果您使用的是最新版本的 Indy,则可以在子句
IdSSLOpenSSL
中添加单元uses
,并在需要时为您TIdHTTP
创建一个默认TIdSSLIOHandlerSocketOpenSSL
实例,但请注意,它只启用了 TLS 1.0,因此如果您需要使用 TLS 1.1+,那么您必须自己创建TIdSSLIOHandlerSocketOpenSSL
对象并根据需要进行配置。