OpenAPI | 客户端

TsgcOpenAPI_Client 是一个非可视化组件,封装了根据 OpenAPI 规范发出 HTTP 请求的主要方法和属性。

 

使用 sgcOpenAPI 解析器创建的每个 OpenAPI 接口都有 2 个方法

 

  1. GetOpenAPIClient:这是一个单例函数,返回主类的实例;若实例不存在,则自动创建。
  2. FreeOpenAPIClient:如果主类已创建则释放它。

 

示例

使用 Abstractapi 检索 IP 地址的地理位置信息。


GetOpenAPIClient.Retrieve_the_location_of_an_IP_address('your api', '80.258.15.2');

 

 

身份验证

 

TLSOptions

允许配置如何使用 HTTP/1 协议连接到安全 SSL/TLS 服务器

 

ALPNProtocols:将发送到服务器的 ALPN 协议列表。

RootCertFile:根证书文件的路径。

CertFile:证书文件的路径。

KeyFile:证书密钥文件的路径。

Password:如果证书有密码保护,请在此处设置。

VerifyCertificate:如果必须验证证书,请启用此属性。

VerifyDepth:一个整数属性,表示对 X.509 证书执行验证时允许的最大链路数。

Version:默认使用 TLS 1.0,如果服务器需要更高的 TLS 版本,可在此处选择。

IOHandler:选择将用于 TLS 连接的库。

iohOpenSSL:使用 OpenSSL 库,是 Indy 组件的默认选项。需要为 win32/win64 部署 OpenSSL 库。

iohSChannel:使用由 Microsoft 为 Windows 实现的安全通道安全协议,无需部署 openssl 库。仅适用于 Windows 32/64 位。

OpenSSL_Options:OpenSSL 库的配置。

APIVersion:允许定义将使用哪个 OpenSSL API 版本。

oslAPI_1_0: 使用 API 1.0 OpenSSL,这是 Indy 支持的最新版本

oslAPI_1_1:使用 OpenSSL API 1.1,需要我们定制的 Indy 库,并支持 OpenSSL 1.1.1 库(含 TLS 1.3 支持)。

oslAPI_3_0:使用 API 3.0 OpenSSL,需要我们的自定义 Indy 库,并允许使用 OpenSSL 3.0.0 库(支持 TLS 1.3)。

LibPath: 在此处您可以配置 openSSL 库的位置

oslpNone:这是默认值,OpenSSL 库应与二进制文件位于同一文件夹中,或位于已知路径中。

oslpDefaultFolder:自动设置所有 IDE 版本应查找 OpenSSL 库的路径。

oslpCustomFolder: 如果选择此选项,请在属性 LibPathCustom 中定义完整路径。

LibPathCustom:当 LibPath = oslpCustomFolder 时,在此处定义 openSSL 库所在的完整路径。

UnixSymLinks: 启用或禁用在 Unix 系统下加载符号链接(默认启用,OSX64 除外):

oslsSymLinksDefault: 默认情况下启用,但在 OSX64 下除外(MacOS Monterey 之后,不带版本号尝试加载库会失败)。

oslsSymLinksLoadFirst:先加载符号链接,然后再尝试加载版本库。

oslsSymLinksLoad: 在尝试加载版本库后加载符号链接。

oslsSymLinksDontLoad:不加载符号链接。

SChannel_Options:允许您使用 Windows 证书存储中的证书。

CertHash:是证书哈希值。您可以在 PowerShell 中运行 dir 命令找到证书哈希值。

CipherList:在此设置将使用的密码套件(以":"分隔)。示例:CALG_AES_256:CALG_AES_128

CertStoreName:存储证书的存储名称。从以下选项中选择:

scsnMY(默认值)

scsnCA

scsnRoot

scsnTrust

CertStorePath:存储证书的存储路径。请从以下选项中选择:

scspStoreCurrentUser(默认值)

scspStoreLocalMachine

 

 

 

代理选项

使用此属性配置通过代理的连接。

 

Enabled: 设为 true 以启用代理连接。

Host:代理服务器地址

Port:代理服务器端口

UserName/Password:连接代理的身份验证信息,仅在需要时填写。

ProxyType:支持以下代理类型:

日志

若 Log 属性已启用,则将套接字消息保存到指定的日志文件,便于调试。

 

Log:如果希望将 HTTP 请求保存到文本文件,请启用此选项。

LogFileName:文件名的完整路径。

 

属性

可用于自定义 OpenAPI 客户端的其他属性:

 

EncodeBodyAsUTF8: 若启用,JSON 正文将以 UTF8 编码(默认情况下为 false)。

 

 

事件

以下是使用 OpenAPI 客户端时可以处理的事件列表。

 

 

OnBeforeRequest

 

在调用 HTTP 请求之前调用此事件。允许自定义参数名称、标头、安全性……以下是如何替换某些参数名称的示例。

 


procedure OnBeforeRequestEvent(Sender: TObject; const aRequest: TsgcOpenAPIRequest);
var
  i: Integer;
  oParameter: TsgcOpenAPIParameter;
begin
  for i := 0 to aRequest.Parameters.Count - 1 do
  begin
    oParameter := aRequest.Parameters[i];
    if oParameter._Name = 'meta-modified-from' then
      oParameter._name := 'eventDateTime-from';
    if oParameter._Name = 'meta-modified-to' then
      oParameter._name := 'eventDateTime-to';
  end;
end;

OnUpload

 

当文件上传时调用此事件,您可以使用此事件了解上传进度。

 

OnDownload

 

当文件下载时调用此事件,您可以使用此事件了解下载进度。

 

OnSSLVerifyPeer

 

如果启用了证书验证,在此事件中您可以验证并决定是否接受服务器证书。

 

OnSSLGetHandler

 

此事件在创建 SSL 处理程序之前引发,您可以在此创建自己的 SSL 处理程序(需要继承自 TIdServerIOHandlerSSLBase 或 TIdIOHandlerSSLBase)并设置所需的属性。

 

OnSSLAfterCreateHandler

 

如果未创建自定义 SSL 对象,则默认使用 OpenSSL 处理程序创建。您可以访问 SSL 处理程序属性并根据需要修改