Programming Examples

ChilkatHOMEASPVisual BasicVB.NETC#CC++MFCDelphiFoxProJavaPerlPythonRubySQL ServerVBScript

PHP Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip


 

 

 

 

 

 

 

 

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

<?php

$http = new COM("Chilkat.Http");

//  Any string unlocks the component for the 1st 30-days.
$success = $http->UnlockComponent('Anything for 30-day trial');
if ($success != true) {
    print $http->lastErrorText() . "\n";
    exit;
}

//  To run an HTTP method asynchronously in a background thread, set
//  the UseBgThread property equal to 1
$http->UseBgThread = true;

//  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 = true;

//  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 != true) {
    print $http->lastErrorText() . "\n";
    exit;
}
else {
    print 'Initiated asynchronous HTTP download...' . "\n";
}

//  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 == true)) {
    //  Show the events in the event log that have accumulated so far...
    $n = $http->EventLogCount;
    if ($n > 0) {

        for ($i = 0; $i <= $n - 1; $i++) {
            print $http->eventLogName($i) . ': '
                 . $http->eventLogValue($i) . "\n";
        }

        $http->ClearEventLog();
    }

    //  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);
}

//  Once the background task has completed, check it for success/failure:
if ($http->BgTaskSuccess) {
    print 'Background task completed successfully.' . "\n";
}


?>

Need a specific example? Send a request to support@chilkatsoft.com

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