delphi什么是THttpClient?


本文整理自网络,侵删。

 

什么是THttpClient?

THttpClient是System.Net.HttpClinet单元中包含的新HTTP客户端。

旧的Indy TIdHttp是唯一实现的,因此Indy可以在所有操作系统上使用,但是THttpClient类使用每个操作系统提供的HTTP库。
因此,它既快速又健壮(维护工作留在OS端)。

另外,当我尝试将SSL与Indy结合使用时,我需要OpenSSL库,这很烦人。
当然,THttpClient类不需要任何其他库!

您通常可以使用将THttpClient包装为非可视组件的TNetHttpClient组件,但是这次我将直接使用THttpClient加载图像。

获取图像
要通过HTTP获取图像,只需调用Get方法,但是THttpClient具有阻塞操作,因此我将其封装在线程中一次。

这次,我并没有真正获得图像,因此我使用了TThread.CreateAnonymousThread使其变得更容易。

↓仅此代码即可获得图像。超级简单!!!

const
  URL = 'https://qiita-image-store.s3.amazonaws.com/0/12977/af4a05d5-dea6-979e-c367-d80241056406.png';

TThread.CreateAnonymousThread(
  procedure
  var
    Http: THttpClient;
    FS: TFileSTream;
    FileName: String;
  begin
    FileName := TPath.Combine(TPath.GetDocumentsPath, 'test.jpg');

    // 获取图像
    FS := TFileStream.Create(FileName, fmCreate, $1ff); // $1ff -> 
    try
      Http := THttpClient.Create;
      try
        Http.HandleRedirects := True;
        Http.OnReceiveData := HttpReceiveData;

        Http.Get(URL, FS);
      finally
        Http.DisposeOf;
      end;
    finally
      FS.DisposeOf;
    end;

    // 
    TThread.Synchronize(
      TThread.Current,
      procedure
      begin
        Image1.Bitmap.LoadFromFile(FileName);
      end
    );
  end

).Start;



相关阅读 >>

Delphi 获取listbox1多选的值

Delphi 读取网上的文本文件

Delphi with 语句的妙用

Delphi escape/unescape编码

Delphi 程序如何禁止切换输入法?

Delphi 如何解决在dll的入口函数中创建或结束线程时卡死

Delphi 十进制转十六进制

Delphi 中的颜色常量及效果图

Delphi 自带的 base64 编解码函数

Delphi在64位系统下读写注册表

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...