HTTP 服务器
TsgcHTTPServer 从您自己的应用程序中发布 HTTP 端点。设置 Port,处理 OnCommandGet,再设置 Active,每个请求都会到达您的代码。OnCommandOther 覆盖 PUT 和 DELETE 等请求方法。它随内置的 Core 运行时一同提供。
一个 HTTP 服务器和五个客户端组件。TsgcHTTPServer 从您自己的应用程序中发布 HTTP 端点和静态文件。TsgcHTTP2Client 在一条 TLS 连接上以多路复用流的方式实现 HTTP/2 协议,并采用 HPACK 头部压缩。TsgcGRPCClient 是构建在其之上的 gRPC 客户端,用于一元和流式 Protocol Buffers 调用。另外三个类通过纯 HTTPS 对接 Google Cloud:Pub/Sub、Calendar 和 Firebase Cloud Messaging。
一段带旁白和字幕的快速入门:HTTP/2 客户端在一条连接上发送多个请求,随后在同一条传输上发起 gRPC 调用,全部使用 Delphi。点击播放前不会下载任何内容。
用 Delphi 调用 HTTP/2 端点并发起 gRPC 调用。
两个组件都声明在 sgcHTTP 单元中,TsgcGRPCClient 携带自己的 HTTP/2 连接,可通过其 Client 属性访问。

TsgcHTTP2Client 使用 HTTP/2(RFC 9113):多个请求以独立流的方式共享同一条 TCP 连接。头部采用 HPACK 压缩,并且 h2 在 TLS 握手期间通过 ALPN 协商。所有请求方法均已覆盖:Get、Post、Put、Patch、Delete 和 Options,每一个都有同步调用和对应的 Async twin.

TsgcGRPCClient 继承了多路复用连接,并在其上加入 gRPC 线路格式。Call 和 CallAsync 覆盖一元 RPC,ServerStreamingCall 处理针对一个请求的响应流,OpenClientStream 和 OpenBidiStream 则涵盖客户端流和双向流。RetryPolicy、Interceptors 和 ServiceConfig 在不改动调用点的情况下添加重试行为和横切逻辑。
这五个类根据底层所需依赖清晰地分成两组。HTTP/2 和 gRPC 需要 ALPN,也就是需要 sgcCustomIndy。Google Cloud 除了 HTTPS 和一个服务账号之外什么都不需要,而内置的 Core 运行时已经提供了这些。HTTP 服务器则来自该运行时本身。
TsgcHTTPServer 从您自己的应用程序中发布 HTTP 端点。设置 Port,处理 OnCommandGet,再设置 Active,每个请求都会到达您的代码。OnCommandOther 覆盖 PUT 和 DELETE 等请求方法。它随内置的 Core 运行时一同提供。
将 DocumentRoot 指向一个文件夹,服务器就会从中返回静态文件。HTTPUploadFiles 将上传的文件保存到磁盘,MaxRequestBodySize 限制请求正文大小,HTTPCompression 和 KeepAlive 则让响应更小、连接保持打开。
SSL 和 SSLOptions 启用 TLS,Authentication 和 OnAuthentication 保护端点,SessionState 跟踪会话,ThreadPool 和 MaxConnections 控制其扩展方式。与 WebSocket 服务器是同一个引擎,只是没有 WebSocket 部分。
TsgcHTTP2Client 在一条 TLS 连接上多路复用独立流,用 HPACK 压缩头部,并通过 h2 进行协商。Connect、Get、Post、Put、Patch、Delete 和 Options,同步或 Async。
TsgcGRPCClient 运行在 HTTP/2 客户端之上:在 HTTP/2 流上传输带长度前缀的 Protocol Buffers 消息,支持一元、服务器流、客户端流和双向 RPC,另有重试策略和拦截器。
TsgcHTTPGoogleCloud_PubSub_Client、TsgcHTTPGoogleCloud_Calendar_Client 和 TsgcHTTPGoogleCloud_FCM_Client 通过 Google 服务账号认证,对接 Pub/Sub、Calendar 和 Firebase Cloud Messaging。它们都不需要 sgcCustomIndy。
事件呈现连接的整个生命周期:OnHTTP2Connect、OnHTTP2Response、OnHTTP2ResponseFragment (用于分块正文),OnHTTP2PushPromise (用于服务器推送),OnHTTP2GoAway 和 OnHTTP2Disconnect。流的生命周期中没有任何一环对您隐藏。
HTTP/2 和 gRPC 客户端基于 sgcCustomIndy 构建,其覆盖的平台范围与 sgcWebSockets 本身相同。Google Cloud 客户端使用纯 HTTPS,因此在 Core 运行时可运行的地方都能运行。支持 Delphi 7 到 RAD Studio 13,以及 C++ Builder。
每个许可证都包含 HTTP 服务器、全部五个客户端和内置运行时的完整源代码,因此可以在您自己的调试器中单步跟踪底层实现。部署无需支付版税。
创建组件,设置端口或指向主机,挂接事件,然后开始。同样的代码可在 Delphi 7 到 13 和 C++ Builder 中编译。
uses
sgcHTTP;
var
HTTP2: TsgcHTTP2Client;
begin
// HTTP/2: multiplexed requests over one TLS connection
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.Host := 'https://api.example.com';
HTTP2.OnHTTP2Response := HTTP2Response;
HTTP2.Active := True;
HTTP2.GetAsync('/v1/status');
end;
procedure TForm1.HTTP2Response(Sender: TObject;
const Connection: TsgcHTTP2ConnectionClient;
const Request: TsgcHTTP2RequestProperty;
const Response: TsgcHTTP2ResponseProperty);
begin
Memo1.Lines.Add(Response.DataString);
end;
uses
sgcHTTP;
var
GRPC: TsgcGRPCClient;
begin
// gRPC: built on the HTTP/2 client, unary and streaming RPC
GRPC := TsgcGRPCClient.Create(nil);
GRPC.Client.Host := 'https://grpc.example.com';
GRPC.OnGRPCResponse := GRPCResponse;
GRPC.CallAsync('example.OrderService', 'GetOrder', RequestBytes);
end;
procedure TForm1.GRPCResponse(Sender: TObject;
const aResponse: TsgcGRPCResponse);
begin
Memo1.Lines.Add(aResponse.DataString);
end;
uses
sgcHTTP_Server;
var
Server: TsgcHTTPServer;
begin
// HTTP server: endpoints and static files
Server := TsgcHTTPServer.Create(nil);
Server.Port := 8080;
Server.DocumentRoot := 'C:\www';
Server.OnCommandGet := ServerCommandGet;
Server.Active := True;
end;
procedure TForm1.ServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo);
begin
if ARequestInfo.Document = '/api/status' then
begin
AResponseInfo.ContentType := 'application/json';
AResponseInfo.ContentText := '{"status":"ok"}';
end;
end;
在 Object Pascal 和 C++ Builder 中是同一种形态。完整功能矩阵 →
sgcHTTP 需要您准备什么,以及不需要什么。两个答案都很简短,而且都写在这个页面上,而不是藏在小字条款里。
client needs sgcCustomIndy
TsgcHTTPServer no, ships with the Core runtime
TsgcHTTP2Client yes, for ALPN
TsgcGRPCClient yes, rides on TsgcHTTP2Client
TsgcHTTPGoogleCloud_PubSub_Client no, plain HTTPS
TsgcHTTPGoogleCloud_Calendar_Client no, plain HTTPS
TsgcHTTPGoogleCloud_FCM_Client no, plain HTTPS
HTTP/2 negotiates h2 with ALPN during the TLS handshake.
The standard Indy library that ships with RAD Studio
has no ALPN support, so both HTTP/2 and gRPC are built
on sgcCustomIndy instead.
包含 sgcWebSockets Core 运行时:HTTP 服务器、每个客户端发送请求所经过的 HTTP/TLS 客户端栈,以及解码 Google Cloud 响应的 JSON 层。一个安装程序,随附完整源代码。
标准 Indy 库不支持 ALPN 协商,因此 TsgcHTTP2Client 以及由此衍生的 TsgcGRPCClient 改为构建在 sgcCustomIndy 之上。订购 sgcHTTP 时始终包含在内,所显示的价格已经包含它。
三个 Google Cloud 客户端使用 Google 服务账号的项目 id、客户端邮箱和私钥进行身份验证,并通过 Core 运行时的纯 HTTPS 栈调用 REST API。没有原生库,也不需要 sgcCustomIndy。
sgcHTTP 面向 Delphi 7 到 RAD Studio 13 以及 C++ Builder。同样这些组件也内置于 sgcWebSockets Enterprise 中,所以现有的 Enterprise 或 All-Access 许可证可能已经涵盖您的需求。试用版安装程序即 sgcWebSockets All-Access 试用版,因此今天就可以评估 HTTP 服务器和全部五个客户端。
sgcHTTP 实现的是公开发布的 HTTP/2、gRPC 和 Google Cloud REST 接口,而不是对某个厂商 SDK 的封装,因此流、头部、RPC 和推送通知都是一等的方法和事件,完整源代码意味着中间没有任何一环是黑盒。
sgcHTTP 内置其所基于的 sgcWebSockets Core 运行时,并始终包含 HTTP/2 和 gRPC 所需的 sgcCustomIndy 附加组件。每个许可证都附带完整源代码,部署无需支付版税。
1 个开发者许可证。同一时间可在一台机器上使用。
2 个开发者许可证。同一时间可在两台机器上使用。
开发者数量不限。覆盖公司所有机器。
面向 Delphi 和 C++ Builder 的 HTTP/2、gRPC 与 Google Cloud 客户端组件,内置 sgcWebSockets Core 运行时。已在使用 sgcWebSockets Enterprise?这些组件同样包含在其中。
查看价格和许可证受到全球各地 Delphi、C++ Builder、Lazarus 和 .NET 开发者的信赖。
你们的 sgcWebSockets 库非常实用,而且易于设置。请继续保持!
sgcWebSockets 非常出色,你们的支持也是最棒的!
非常感谢你们的帮助和支持,我很喜欢你们的组件。
sgcHTTP 与 eSeGeCe 面向 Delphi、C++ Builder 和 .NET 的其他组件库遵循相同的约定。它们都附带完整源代码,部署无需支付版税。
面向 Delphi、C++ Builder、Lazarus 和 .NET 的 WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI 及 30+ API 集成。它的 Enterprise 版本也包含 gRPC。
面向 Delphi 和 C++ Builder 的 REST 服务器、OpenAPI 服务器和 OpenAPI 客户端组件。可根据 OpenAPI 3.x 契约发布 REST API,或调用任何由 OpenAPI 描述的 API。
面向 Delphi 和 C++ Builder 的 OAuth2 客户端、JWT 客户端和 WebAuthn 支持。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 MQTT、AMQP 0.9.1 和 1.0、Apache Kafka 与 STOMP 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 Telegram 和 WhatsApp Business 客户端组件。独立产品,随附 sgcWebSockets Core 运行时。
面向 Delphi 和 C++ Builder 的 AI、LLM 和 MCP 组件。一个组件即可对接七家 LLM 提供商,另有 MCP、嵌入和语音。
面向 Delphi、C++ Builder 和 .NET 的服务器端 HTML 和界面组件,基于 Bootstrap 5 和 htmx。
原始 QUIC 传输,以及 HTTP/3 客户端和服务器,并支持 WebTransport。作为 sgcWebSockets Enterprise 的附加组件。
OpenAPI 3.x 解析器、原生 Pascal SDK 生成器、OpenAPI 服务器组件,以及 1,195+ 预构建云 SDK。
文档使用 XAdES、PAdES、CAdES 和 ASiC,代码使用 Authenticode、ClickOnce、NuGet 和 VSIX。
使用纯 Object Pascal 创建、编辑、查看、签名、涂黑并验证 PDF 文件,无需部署任何 DLL。单独许可销售。
面向 Delphi 和 C++ Builder 的 Windows Hello、指纹传感器和 Windows 生物特征框架。
更新后的 Indy TCP/IP 组件,为 Delphi 7 到 13 提供现代 TLS、IPv6 和 HTTP/2。