Delphi Rio 中的 TRESTClient 可以在 Windows XP 中工作吗?

Posted

技术标签:

【中文标题】Delphi Rio 中的 TRESTClient 可以在 Windows XP 中工作吗?【英文标题】:Can TRESTClient in Delphi Rio be made to work in Windows XP? 【发布时间】:2020-08-11 14:41:04 【问题描述】:

使用 TRESTClient 组件我添加了我的应用程序 CW_EPG 在 Windows 7 及更高版本下访问 SchedulesDirect.org JSON 数据库的功能,但在 Windows XP 中运行该应用程序在尝试访问该站点时只会产生以下错误:@987654322 @。我尝试启用/禁用对象检查器中列出的各种控件,但没有成功更改该错误消息。是我遗漏了什么还是这个 Rio 子系统与 XP 不兼容?

FWIW,这是相关的代码段(在对象检查器中将 RESTClient1 的基本 URL 设置为 https://json.schedulesdirect.org/20141201):

  RESTRequest1.ClearBody;
  RESTRequest1.AddBody('"username":"' + userID
    + '", "password":"' + THashSHA1.GetHashString(userPass) + 
    '"',ctTEXT_PLAIN);
  RESTRequest1.Method := rmPOST;
  RESTRequest1.Resource := 'token';
  RESTResponse1.RootElement := '';
  try
    RESTRequest1.Execute;
  except on E:Exception do
    begin
      ShowMessage('Error: ' + E.Message);
      exit;
    end;
  end;

【问题讨论】:

您是否尝试过在运行时调试TRESTClient 的源代码,以了解它是如何解析 REST URL 并解析 REST 服务器名称的? @RemyLebeau,你是说它真的应该在 XP 上工作吗?我还在 Win10 和 XP 上尝试了带有该 URL 的 Embarcadero REST 调试器。它的行为类似于我的应用程序:在 10 上工作,在 XP 上失败。我还没有将 Rio 调试器的学习曲线爬升到足以使用它来调试在 WinXP VM 上运行的应用程序,但我猜你是说接下来应该是这样,对吧? 当然,您检查过 XP VM 上的网络连接?你能ping通json.schedulesdirect.org吗? @Olivier,是的,事实上,这个问题首先是由一位使用物理 XP 系统的测试人员向我报告的,该系统使用我的应用程序的旧版本定期访问该站点。但是您的问题让我看了一下没有 Internet 连接的错误消息,答案是“相同”。显然,故障发生在通话的早期。除非有人能告诉我,我将开始攀登 Remy 建议的学习曲线是没有希望的,但我对在这一点上找到真正的解决方案并不乐观。 :( 另一种可能性是 SSL 的问题(尽管它应该给出另一个错误消息)。 XP下可以用IE浏览到schedulesdirect.org吗? 【参考方案1】:

TRESTClient 似乎可以在 Windows XP 中工作,但只有在应用黑客“欺骗”XP POSReady 安装并因此启用 TLS 1.1 和 1.2 之后。例如,请参阅此页面:https://msfn.org/board/topic/178092-enable-tls-11-and-12-in-windows-xp-correctly/

顺便说一句,@Remy Lebeau,Embarcadero 的远程调试器也无法在我的 XP VM 上工作,我认为这可能是因为它是一个精简的“nLite”XP 安装。但是,我现在已经构建了一个完整的 XP-SP3 (POSReady) VM,并且远程调试器 (paserver) 在该安装中也失败了,在 KERNEL32.dll 中寻找一个不存在的入口点。

【讨论】:

如果您不想打扰那些补丁,您可以切换到基于 OpenSSL 的网络组件(例如 Indy)。 @Olivier,但是我不得不放弃 TRESTClient 中的 JSON 好东西,它神奇地将东西解析成客户端数据集......

以上是关于Delphi Rio 中的 TRESTClient 可以在 Windows XP 中工作吗?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 10.3.1来了

如何在 Delphi Rio 上设置日期格式 - 未声明的标识符:'shortdateformat' [重复]

Redis源码剖析 - Redis IO操作之rio

Redis源码剖析 - Redis IO操作之rio

Rio手把手教学:如何打造容器化应用程序的一站式部署体验

Rancher 开源 Rio,整合 IstioKnative 与 Kubernetes 能力