Delphi XE2 实现 HTTPS 通信与 GZIP 解压缩

在 Delphi XE2 中,处理 HTTPS 请求并解析返回的 GZIP 压缩数据,可以使用 Indy 组件。以下代码片段演示了如何实现:

uses  IdHTTP, IdSSLOpenSSL, zLib;

procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  Response: TMemoryStream;
  GZIPStream: TZCompressionStream;
  DecompressedData: TStringStream;
begin
  // 初始化组件
  HTTP := TIdHTTP.Create(nil);
  SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  Response := TMemoryStream.Create;
  DecompressedData := TStringStream.Create;

  try
    // 设置 SSL/TLS
    HTTP.IOHandler := SSLIOHandler;

    // 发送 HTTPS POST 请求
    HTTP.Post('https://example.com', [], Response);

    // 解压缩 GZIP 数据
    Response.Position := 0;
    GZIPStream := TZCompressionStream.Create(Response);
    GZIPStream.CopyFrom(Response, Response.Size);
    DecompressedData.CopyFrom(GZIPStream, 0);

    // 处理解压后的数据
    ShowMessage(DecompressedData.DataString);

  finally
    DecompressedData.Free;
    GZIPStream.Free;
    Response.Free;
    SSLIOHandler.Free;
    HTTP.Free;
  end;
end;

这段代码展示了如何使用 Indy 组件发送 HTTPS POST 请求,接收 GZIP 压缩的响应数据,并使用 zLib 库进行解压缩。

rar 文件大小:2.95MB