delphi网络组件ICS的THttpCli和TSslHttpCli如何设置自定义Header

新版本的ics86,有THttpCli和TSslHttpCli两种组件,有个新的属性ExtraHeaders,可以这样写:

http.ExtraHeaders('par1: 11');     //不能写par1:11,要写par1: 11,有个空格

http.ExtraHeaders('par2: 11');

这样提交后,服务端就收到headers了。

 

注意不能写par1:11,要写par1: 11,有个空格。

分析源码:OverbyteIcsHttpProt,发现有这样一行:

    if Pos (': ', FExtraHeaders[N]) > 1 then Headers.Add(FExtraHeaders[N]);

也就是,没有冒号空格的认为无效了。

 

ICS的优点是多线程,这点比indy方便的多。

 

//----------------------------------------------------------------------------------//

复制代码
//开始提交,联网用。TSslHttpCli、TSslContext   or (not idHttp is TSslHttpCli)
                ssl:=TSslHttpCli.create(application)if (assigned(ssl.SslContext)) then sslCnt:=ssl.SslContext
                else begin
                    sslCnt:=TSslContext.Create(application);
                    ssl.SslContext:=sslCnt;
                end;
                //注意,扩展headers必须包含:空格,比如:Authorization: 123,写成Authorization:123不行
                ssl.ExtraHeaders.Clear;
                ssl.ExtraHeaders.Add('Authorization: ' +  Authorization);
                //网址、post流
                ssl.ContentTypePost:='application/json';
                ssl.URL:=payUrl;
                //
PostData := TStringStream.Create('');
                PostData.WriteString(ansitoUtf8(jsonTxt));
ssl.SendStream:= postData; postData.Position:=0; ssl.RcvdStream:= TStringStream.Create(''); ssl.Timeout:=60 * 3; //3分钟 writeLogFile(' 移动支付4:时间'+intToStr(ssl.timeout)+',准备post提交', hLogFileHandle); //提交 ssl.Post; //读取响应 writeLogFile(' 移动支付5:应答StatusCode:'+ intToStr(ssl.StatusCode), hLogFileHandle); if ssl.StatusCode <> 200 then begin sErrMsg:=sErrMsg+#13#10'Post提交失败错误: ' + IntToStr(ssl.StatusCode) + ' ' + ssl.ReasonPhrase; writeLogFile(' 移动支付5.2:错误:'+sErrMsg, hLogFileHandle); end else begin ssl.RcvdStream.Seek(0, 0); SetLength(strBuf, ssl.RcvdStream.Size); ssl.RcvdStream.Read(strBuf[1], Length(strBuf)); jsonResult:=trim(string(strBuf)); end; //释放响应流 ssl.RcvdStream.Free; ssl.RcvdStream := nil;
复制代码

 

//------------------------------------------------------------------------------------------------------//

 

好坑。

posted @   海宏软件  阅读(584)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示