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 中工作吗?的主要内容,如果未能解决你的问题,请参考以下文章