Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

HTTP in a Background Thread (Asynchronous HTTP)

This example shows the technique one would follow to run any Chilkat HTTP method in a background task. (Only HTTP methods that communicate with an HTTP server are background-enabled. Methods that perform no HTTP communications return immediately and never need to be backgrounded.)

Download Chilkat HTTP ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATHTTPLib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
http: TChilkatHttp;
success: Integer;
n: Integer;
i: Integer;

begin
http := TChilkatHttp.Create(Self);

//  Any string unlocks the component for the 1st 30-days.
success := http.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(http.LastErrorText);
    Exit;
  end;

//  To run an HTTP method asynchronously in a background thread, set
//  the UseBgThread property equal to 1
http.UseBgThread := 1;

//  For those programming languages that support event callbacks:
//  events are not fired when a task is running in the background thread.
//  Instead, Chilkat has added the "event log" mechanism.  While the
//  background task is running, events that normally would've been fired
//  are accumulated in the event log.  Your application may periodically check
//  the event log to keep track of the progress of the background task.
//  To enable event logging, set the KeepEventLog property = 1
http.KeepEventLog := 1;

//  Start an asynchronous HTTP download in a background thread.
//  The method will return cktrue if the task was successfully started.
//  Note: When the UseBgThread property = 1, all methods involving
//  HTTP communications will be asynchronous.  These methods include:
//  SynchronousRequest, QuickGetStr, QuickGet, PostUrlEncoded, XmlRpc,
//  XmlRpcPut, QuickPutStr, QuickGetObj, QuickDeleteStr, PutText,
//  PutBinary, PostBinary, PostMime, GetHead, DownloadAppend, etc.
success := http.Download('http://www.chilkatsoft.com/download/ChilkatJava.zip','ChilkatJava.zip');
if (success <> 1) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end
else
  begin
    Memo1.Lines.Add('Initiated asynchronous HTTP download...');
  end;

//  Write a loop to wait for the background task to complete.
//  Your application would typically do something different than this --
//  after all... there's no point in doing the task asynchronously if your application
//  is simply going to wait for it to complete -- that's the same as doing it synchronously,
//  and that could've been achieved by a single call to the http.Download method
//  with the UseBgThread = 0.
//  However... we do this here for the purpose of demonstration...
while (http.BgTaskRunning = 1) do
  begin
    //  Show the events in the event log that have accumulated so far...
    n := http.EventLogCount;
    if (n > 0) then
      begin

        for i := 0 to n - 1 do
          begin
            Memo1.Lines.Add(http.EventLogName(i)
                 + ': ' + http.EventLogValue(i));
          end;

        http.ClearEventLog();
      end;

    //  In some programming languages, you might wish to handle user-interface events
    //  For example, in C#  you might call Application.DoEvents()

    //  Sleep .1 seconds -- to keep the CPU from being 100% busy...
    http.SleepMs(100);
  end;

//  Once the background task has completed, check it for success/failure:
if (http.BgTaskSuccess) then
  begin
    Memo1.Lines.Add('Background task completed successfully.');
  end;

end;

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser