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 @ 2021-11-06 23:02  海宏软件  阅读(425)  评论(1编辑  收藏  举报