zoukankan      html  css  js  c++  java
  • Delphi使用进行post数据时超时设置

    因项目需要进行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 FilesBorlandOverbyteIcsV7Gold 

    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.
    

     

    安装包和Demo下载:

    http://download.csdn.net/detail/tc310/9384426 

  • 相关阅读:
    Android 开发工具类 19_NetworkStateReceiver
    Android 开发工具类 18_NetWorkUtil
    Sticky Footer (让页脚永远停靠在页面底部,而不是根据绝对位置)
    min-height最小高度的实现(兼容IE6、IE7、FF)(解决IE6不兼容min-height)
    不同浏览器设置背景透明度
    讨论内外边距对行内元素是否起作用,则要对行内替换元素和行内非替换元素分别讨论:
    超链接访问过后hover样式就不出现的问题
    解决:子元素设置margin-top,父元素也受影响的问题
    制作0.5px像素的细条
    去掉inline-block元素间隙的几种方法
  • 原文地址:https://www.cnblogs.com/tc310/p/5089778.html
Copyright © 2011-2022 走看看