本文整理自网络,侵删。
什么是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 windows 编程[5] - 学习窗体生成的过程五
Delphi环境下基于spcomm控件开发串口通讯报文字节丢失的问题解决
更多相关阅读请进入《Delphi》频道 >>