You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.4 CE中TNetHTTPClient添加特殊格式自定义Header问询

Delphi 10.4 CE 添加带嵌套方括号的HTTP自定义Header解决方案

核心原理

Delphi的TNetHTTPClient.CustomHeaders本质是TNameValueStringList,它支持键名包含方括号这类特殊字符,无需额外转义处理,直接赋值或添加即可。


具体实现方案

1. 直接赋值设置

直接使用键名赋值是最简便的方式,代码如下:

NetHTTPClient1.CustomHeaders['HeaderName1[HeaderName2]'] := 'HeaderValue';

可通过以下代码验证设置是否成功:

ShowMessage(NetHTTPClient1.CustomHeaders['HeaderName1[HeaderName2]']);

若弹出HeaderValue则说明设置有效。

2. 使用Add方法显式添加

如果需要避免键名重复时的覆盖行为,可使用Add方法的键值对重载版本:

NetHTTPClient1.CustomHeaders.Add('HeaderName1[HeaderName2]', 'HeaderValue');

也可以直接传入完整的键值字符串(键值之间用等号分隔):

NetHTTPClient1.CustomHeaders.Add('HeaderName1[HeaderName2]=HeaderValue');

3. 动态库包装器中的适配处理

由于是在动态库中实现,需注意跨模块的字符串内存管理问题:

  • 同Delphi环境调用:优先使用WideString传递键名和值,它基于COM字符串标准,跨模块内存管理安全。示例导出函数:
    procedure AddSpecialHeader(HTTPClient: TNetHTTPClient; const HeaderKey: WideString; const HeaderValue: WideString); stdcall;
    begin
      if Assigned(HTTPClient) then
        HTTPClient.CustomHeaders[HeaderKey] := HeaderValue;
    end;
    
  • 非Delphi环境调用:使用PWideChar传递字符串,在DLL内部转换为Delphi字符串处理:
    procedure AddSpecialHeader(HTTPClient: Pointer; HeaderKey: PWideChar; HeaderValue: PWideChar); stdcall;
    var
      LocalClient: TNetHTTPClient;
      LocalKey, LocalValue: string;
    begin
      LocalClient := TNetHTTPClient(HTTPClient);
      if Assigned(LocalClient) and Assigned(HeaderKey) and Assigned(HeaderValue) then
      begin
        LocalKey := HeaderKey;
        LocalValue := HeaderValue;
        LocalClient.CustomHeaders[LocalKey] := LocalValue;
      end;
    end;
    

4. 验证Header发送情况

通过TNetHTTPClient的OnBeforeSend事件,可在请求发送前检查自定义Header是否正确添加:

procedure TForm1.NetHTTPClient1BeforeSend(const Sender: TObject; const Request: IHTTPRequest);
var
  I: Integer;
begin
  for I := 0 to Request.CustomHeaders.Count - 1 do
    Memo1.Lines.Add(Request.CustomHeaders.Names[I] + ': ' + Request.CustomHeaders.ValueFromIndex[I]);
end;

内容的提问来源于stack exchange,提问作者Claus Svalekjær

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:50:25