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

如何排查idHTTP调用微软OpenID配置接口时的10054错误?

使用TIdHTTP下载JSON时出现10054错误的排查方案

问题描述

我用以下代码通过TIdHTTP下载JSON信息:

idHTTP := TIdHTTP.Create(nil);
JSON:=idHTTP.get('https://login.microsoftonline.com/common/.well-known/openid-configuration');

但遇到错误:

10054 Connection reset by peer

该链接在浏览器中可正常访问,求排查方法。

排查步骤

  • 启用正确的SSL/TLS版本:微软的OpenID配置接口要求至少TLS 1.2,旧版Indy默认可能不支持。给TIdHTTP绑定TIdSSLIOHandlerSocketOpenSSL组件,并指定SSL版本为TLS 1.2:
    var
      SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
    begin
      idHTTP := TIdHTTP.Create(nil);
      SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idHTTP);
      SSLHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
      idHTTP.IOHandler := SSLHandler;
      JSON := idHTTP.Get('https://login.microsoftonline.com/common/.well-known/openid-configuration');
    end;
    
  • 添加浏览器模拟请求头:服务器可能会拒绝缺少标准头的请求,添加User-Agent等头信息模拟浏览器请求:
    idHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36';
    // 可选:添加Accept头匹配JSON格式
    idHTTP.Request.Accept := 'application/json, text/plain, */*';
    
  • 检查代理配置:如果系统使用代理上网,TIdHTTP默认不会自动读取代理设置。可以手动配置代理参数,或者开启自动检测:
    idHTTP.ProxyParams.AutoDetect := pdAutoDetect;
    
  • 排查网络拦截:确认程序没有被防火墙、杀毒软件或企业网关拦截出站连接,这类设备常过滤非浏览器发起的HTTPS请求。
  • 更新Indy组件:旧版本Indy存在不少网络兼容性问题,更新到最新稳定版能解决大部分已知的握手或连接异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:12:10