Delphi安装OverbyteIcsV7Gold安装说明

因项目需要进行http的post提交数据,开始时用indy的idHttp组件,但是测试时发现当网络中断(如拔掉网线),idHttp的超时设置无效果,要等20秒才提示超时(参考网上的做法,将indy9升级到indy10,且设置了idHttp的connetTimeout,ReadTimeout属性,均无效果)。

后来发现用ICS组件THttpCli可以很好的控制提交超时,达到我的目的。

ICS版本:OverbyteIcsV7Gold

下载:http://www.overbyte.be/arch/OverbyteIcsV7Gold.zip

Delphi7安装ICS

1、下载完成后解压到英文目录,建议解压缩到Delphi7安装目录,如:C:\Program Files\Borland\OverbyteIcsV7Gold 

2、Tools——Environment Options——library,在library path里加入OverbyteIcsV7Gold->Delphi->Vc32目录。

3、从File->Open中打开OverbyteIcsV7Gold->Delphi->Vc32->OverbyteIcsD7Design.dpk文件,compile——install。
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OverbyteIcsWndControl, OverbyteIcsHttpProt, StdCtrls;
 
type
  TForm1 = class(TForm)
    HttpCli1: THttpCli;
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure HttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
      ErrCode: Word);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Data : String;
  retStr: string;
  DataLen: Int64;
  FailMsg: string;
begin
  Data := '{'                                   +
           '"machineCode":"123",'               +
           '"orgCode":"123",'                   +
           '"data": {'                          +
           '"cardNo": "12345678",'              +
           '"cardType": "2"'                    +
           '}'                                  +
           '}';
  HttpCli1.SendStream := TMemoryStream.Create;
  HttpCli1.RcvdStream := TMemoryStream.Create;
  try
    HttpCli1.SendStream.Write(Data[1], Length(Data));
    HttpCli1.SendStream.Seek(0, 0);
 
    HttpCli1.URL := Trim(Edit1.Text);
    HttpCli1.Timeout := 2;//V7.04 sync only!
    try
      HttpCli1.ContentTypePost := 'application/json;charset=utf-8';
      HttpCli1.Post;
      DataLen := HttpCli1.RcvdStream.Size;
      SetLength(retStr,DateDelta);
      HttpCli1.RcvdStream.Position := 0;
      HttpCli1.RcvdStream.Read(PChar(retStr)^,DataLen);
      Memo1.Text := retStr;
      //ShowMessage(retStr);
    except
      on E: Exception do
      begin
        ShowMessage(e.Message);
      end; 
    end;
 
 
  finally
    HttpCli1.RcvdStream.Free;
    HttpCli1.RcvdStream := nil;
    HttpCli1.SendStream.Free;
    HttpCli1.SendStream := nil;
  end;
end;
 
 
procedure TForm1.HttpCli1RequestDone(Sender: TObject; RqType: THttpRequest;
  ErrCode: Word);
var
    Data : String;
begin
//    HttpCli1.SendStream.Free;
//    HttpCli1.SendStream := nil;
//    //ShowMessage(IntToStr(ErrCode));
//    if ErrCode <> 0 then //有异常
//    begin
//        HttpCli1.RcvdStream.Free;
//        HttpCli1.RcvdStream := nil;
//        Exit;
//    end;
//    if HttpCli1.StatusCode <> 200 then //返回错误
//    begin
//        HttpCli1.RcvdStream.Free;
//        HttpCli1.RcvdStream := nil;
//        Exit;
//    end;
//    HttpCli1.RcvdStream.Seek(0, 0);
//    SetLength(Data, HttpCli1.RcvdStream.Size);
//    HttpCli1.RcvdStream.Read(Data[1], Length(Data));
end;
 

end.

交流QQ:2609715119

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最新版的ics支持d7-xe10.1,还支持OpenSSL-Win32 主要控件请见OverbyteIcsReg.pas uses {$IFDEF FMX} FMX.Types, Ics.Fmx.OverbyteIcsWndControl, Ics.Fmx.OverbyteIcsWSocket, Ics.Fmx.OverbyteIcsDnsQuery, Ics.Fmx.OverbyteIcsFtpCli, Ics.Fmx.OverbyteIcsFtpSrv, Ics.Fmx.OverbyteIcsMultipartFtpDownloader, Ics.Fmx.OverbyteIcsHttpProt, Ics.Fmx.OverbyteIcsHttpSrv, Ics.Fmx.OverbyteIcsMultipartHttpDownloader, Ics.Fmx.OverbyteIcsHttpAppServer, Ics.Fmx.OverbyteIcsCharsetComboBox, Ics.Fmx.OverbyteIcsPop3Prot, Ics.Fmx.OverbyteIcsSmtpProt, Ics.Fmx.OverbyteIcsNntpCli, Ics.Fmx.OverbyteIcsFingCli, Ics.Fmx.OverbyteIcsPing, {$IFDEF USE_SSL} Ics.Fmx.OverbyteIcsSslSessionCache, Ics.Fmx.OverbyteIcsSslThrdLock, {$ENDIF} Ics.Fmx.OverbyteIcsWSocketE, Ics.Fmx.OverbyteIcsWSocketS, {$ENDIF FMX} {$IFDEF VCL} Controls, OverbyteIcsWndControl, OverbyteIcsWSocket, OverbyteIcsDnsQuery, OverbyteIcsFtpCli, OverbyteIcsFtpSrv, OverbyteIcsMultipartFtpDownloader, OverbyteIcsHttpProt, OverbyteIcsHttpSrv, OverbyteIcsMultipartHttpDownloader, OverbyteIcsHttpAppServer, OverbyteIcsCharsetComboBox, OverbyteIcsPop3Prot, OverbyteIcsSmtpProt, OverbyteIcsNntpCli, OverbyteIcsFingCli, OverbyteIcsPing, {$IFDEF USE_SSL} OverbyteIcsSslSessionCache, OverbyteIcsSslThrdLock, {$ENDIF} OverbyteIcsWSocketE, OverbyteIcsWSocketS, OverbyteIcsSysLogClient, OverbyteIcsSysLogServer, OverbyteIcsSnmpCli, OverbyteIcsSmtpSrv, // VCL only OverbyteIcsMultiProgressBar, OverbyteIcsEmulVT, OverbyteIcsTnCnx, OverbyteIcsTnEmulVT, OverbyteIcsTnScript, {$IFNDEF BCB} OverbyteIcsWSocketTS, {$ENDIF} {$ENDIF VCL} {$IFDEF ICS_COMMON} OverbyteIcsMimeDec, OverbyteIcsMimeUtils, OverbyteIcsTimeList, OverbyteIcsLogger, {$IFNDEF BCB} OverbyteIcsCookies, {$ENDIF !BCB} {$ENDIF} {$IFDEF RTL_NAMESPACES}System.SysUtils{$ELSE}SysUtils{$ENDIF}, {$IFDEF RTL_NAMESPACES}System.Classes{$ELSE}Classes{$ENDIF}; procedure Register; implementation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值