{"id":4165,"date":"2016-08-29T10:09:54","date_gmt":"2016-08-29T02:09:54","guid":{"rendered":"http:\/\/blog.qdac.cc\/?p=4165"},"modified":"2016-08-30T09:04:00","modified_gmt":"2016-08-30T01:04:00","slug":"%e6%96%b0%e7%89%88-thttpclient%e7%bb%84%e4%bb%b6%e5%90%8c%e6%ad%a5%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6%e6%96%b9%e6%b3%95%e3%80%82","status":"publish","type":"post","link":"https:\/\/blog.qdac.cc\/?p=4165","title":{"rendered":"\u65b0\u7248 THttpClient\u7ec4\u4ef6\u540c\u6b65\u4e0b\u8f7d\u6587\u4ef6\u65b9\u6cd5\u3002"},"content":{"rendered":"<h3><span style=\"color: #ff0000\"><strong>\u6211\u4e00\u76f4\u90fd\u5728\u5bfb\u627e\u5404\u79cd\u4e1a\u52a1\u529f\u80fd\u7684\u6700\u7b80\u5355\u5199\u6cd5\uff0c\u7528\u51cf\u6cd5\u7684\u6a21\u5f0f\u6765\u5f00\u53d1\u8f6f\u4ef6\u3002\u4e0b\u9762\u662f\u6211\u4e0b\u8f7d\u6587\u4ef6\u7684\u5199\u6cd5\uff0c\u5982\u679c\u6709\u66f4\u7b80\u5355\u7684\u65b9\u6cd5\uff0c\u8bf7\u7559\u8a00\u544a\u77e5\u3002<\/strong><\/span><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" src=\"https:\/\/img.alicdn.com\/imgextra\/i2\/41670659\/TB2x2p5XV_AQeBjSZFBXXX22XXa-41670659.gif\" width=\"613\" height=\"224\" \/><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:delphi decode:true \">unit Unit3;\r\n\r\ninterface\r\n\r\nuses\r\n  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,\r\n  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Net.HttpClient,\r\n  Vcl.ComCtrls;\r\n\r\ntype\r\n  TForm3 = class(TForm)\r\n    btnStart: TButton;\r\n    ProgressBar1: TProgressBar;\r\n    edt1: TEdit;\r\n    procedure btnStartClick(Sender: TObject);\r\n    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r\n    procedure FormShow(Sender: TObject);\r\n    procedure FormCreate(Sender: TObject);\r\n  private\r\n    { Private declarations }\r\n\r\n    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u4e0b\u8f7d\u7684\u65f6\u5019\u4e0d\u5141\u8bb8\u5173\u95ed\u7a97\u4f53\r\n    \/\/\/ &lt;\/summary&gt;\r\n    FAllowFormClose: Boolean;\r\n\r\n    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u63a5\u6536\u6570\u636e\u4e8b\u4ef6\r\n    \/\/\/ &lt;\/summary&gt;\r\n    procedure ReceiveDataEvent(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean);\r\n  public\r\n    { Public declarations }\r\n  end;\r\n\r\nvar\r\n  Form3: TForm3;\r\n\r\nimplementation\r\n\r\n{$R *.dfm}\r\n\r\nprocedure TForm3.ReceiveDataEvent(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean);\r\nbegin\r\n  \/\/\u52a0\u4e0a\u8fd9\u53e5\u754c\u9762\u4e0d\u5361\u6b7b.\r\n  Application.ProcessMessages;\r\n  ProgressBar1.Position := AReadCount;\r\nend;\r\n\r\nprocedure TForm3.btnStartClick(Sender: TObject);\r\nvar\r\n  MyHTTPClient: THTTPClient;\r\n  MyHTTPResponse: IHTTPResponse;\r\n  MyMemoryStream: TMemoryStream;\r\n  downloadUrl: string;\r\nbegin\r\n  MyHTTPClient := THTTPClient.Create;\r\n  MyMemoryStream := TMemoryStream.Create;\r\n  try\r\n    btnStart.Enabled := False;\r\n    FAllowFormClose := False;\r\n    downloadUrl := Trim(edt1.Text);\r\n\r\n    \/\/\u83b7\u53d6\u6587\u4ef6\u7684\u5927\u5c0f\r\n    MyHTTPResponse := MyHTTPClient.Head(downloadUrl);\r\n    ProgressBar1.Position := 0;\r\n    ProgressBar1.Max := MyHTTPResponse.ContentLength;\r\n\r\n    \/\/\u5f00\u59cb\u4e0b\u8f7d,\u4fdd\u5b58\u5230\u672c\u5730\r\n    MyHTTPClient.OnReceiveData := ReceiveDataEvent;\r\n    MyHTTPResponse := MyHTTPClient.Get(downloadUrl, MyMemoryStream);\r\n    if MyHTTPResponse.StatusCode = 200 then\r\n    begin\r\n      MyMemoryStream.SaveToFile('c:\\aa.exe');\r\n      ShowMessage('\u4e0b\u8f7d\u5b8c\u6210');\r\n    end;\r\n  finally\r\n    MyHTTPClient.Free;\r\n    MyMemoryStream.Free;\r\n    \/\/\u6700\u7ec8\u90fd\u5141\u8bb8\u5173\u95ed\u7a97\u4f53\r\n    btnStart.Enabled := True;\r\n    FAllowFormClose := True;\r\n  end;\r\nend;\r\n\r\nprocedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean);\r\nbegin\r\n  CanClose := FAllowFormClose;\r\nend;\r\n\r\nprocedure TForm3.FormCreate(Sender: TObject);\r\nbegin\r\n  ReportMemoryLeaksOnShutdown := True;\r\nend;\r\n\r\nprocedure TForm3.FormShow(Sender: TObject);\r\nbegin\r\n  btnStart.Enabled := True;\r\n  FAllowFormClose := True;\r\n  ProgressBar1.Position := 0;\r\nend;\r\n\r\nend.<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u4e00\u76f4\u90fd\u5728\u5bfb\u627e\u5404\u79cd\u4e1a\u52a1\u529f\u80fd\u7684\u6700\u7b80\u5355\u5199\u6cd5\uff0c [&hellip;]<\/p>\n","protected":false},"author":117,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8,603,21],"tags":[],"class_list":["post-4165","post","type-post","status-publish","format-standard","hentry","category-delphi","category-603","category-misc"],"views":5397,"_links":{"self":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/4165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/users\/117"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4165"}],"version-history":[{"count":8,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/4165\/revisions"}],"predecessor-version":[{"id":4182,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=\/wp\/v2\/posts\/4165\/revisions\/4182"}],"wp:attachment":[{"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.qdac.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}