gpt4 book ai didi

web-services - 使用 TidHTTPServer 以安全的方式处理 GET 请求

转载 作者:行者123 更新时间:2023-12-03 03:40:52 25 4
gpt4 key购买 nike

我有一个包含许多服务的类,这些服务基本上调用数据库连接(DBISAM 或通过 ZEOS)。

我正在使此类在 Web 服务中可用,例如使用 TidHTTPServer。我正在使用其中的 OnCommandGet 事件并使用 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo:TIdHTTPResponseInfo 发出请求和结果。

我创建了一个 TObjectList 来保存与此服务类相关的每个客户端的实例。每次完成调用时都会创建并释放与数据库的连接,希望不会出现线程问题。

我想知道这是否是正确的方法。我没有使用来自 TidHTTPServer 的 session 。根据每个服务请求,我会在 TObjectList 上找到存储与该连接相关的信息的对象。

我已经查看了问题,但没有获得我需要的所有信息。

但是我不确定安全性,特别是当许多调用可以同时发生时。我经常使用它,主要是每次 1 个调用,因为很难同时测试多个连接。

我想知道这是否是正确的方法,或者如果不是,我如何实现一个“桥”来安全地调用我的类(我在这个类上创建了一个 QueryActivity,模仿 COM 查询风格)传递请求并返回参数。

德尔福 XE2 - Indy 10.5.8

最佳答案

Indy TCP 服务器类(如 tTIdHTTPServer)可以选择分配特定于应用程序的上下文类。此类包含有关客户端的连接特定信息,并且可以使用自定义属性进行扩展以携带应用程序特定信息。为此,请从 TIdServerContext 创建一个子类,并将该类分配给服务器的 ContextClass。

如果连接在请求之间保持事件状态(建议这样做以节省资源),则此上下文将在其生命周期内保留应用程序特定的客户端信息。

Indy 还允许迭代所有已连接的连接上下文的列表,例如支持广播消息,或收集信息。

Stackoverflow 上的示例:

How to track number of clients with Indy TIdTCPServer

Indy 10 TCP server

How do I send a command to a single client instead of all of them?

关于web-services - 使用 TidHTTPServer 以安全的方式处理 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17497566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com