Perl Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Perl Examples

Quick Start
Unicode
Byte Array
Bz2
Certificates
CSV
Email
Encryption
FTP
HTML-to-XML
HTTP
IMAP
MHT
MIME
POP3
RSA
S/MIME
Signatures
SMTP
Socket / SSL
Spider
SFTP
SSH Key
SSH
SSH Tunnel
Tar
HTTP Upload
XML
XMP
Zip

More Examples...
String
Email Object
DKIM / DomainKey
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA
Bzip2
LZW

 

 

 

 

 

 

 

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.)

Chilkat Module for Perl 5.8.*

Chilkat Module for Perl 5.10.*

Chilkat Module for Perl 5.8.* (x64)

Chilkat Module for Perl 5.10.* (x64)

use chilkat;

$http = new chilkat::CkHttp();

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

#  To run an HTTP method asynchronously in a background thread, set
#  the UseBgThread property equal to 1
$http->put_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->put_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) {
    print $http->lastErrorText() . "\r\n";
    exit;
}
else {
    print "Initiated asynchronous HTTP download..." . "\r\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->get_BgTaskRunning() == 1)) {
    #  Show the events in the event log that have accumulated so far...
    $n = $http->get_EventLogCount();
    if ($n > 0) {

        for ($i = 0; $i <= $n - 1; $i++) {
            print $http->eventLogName($i) . ": "
                 . $http->eventLogValue($i) . "\r\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->get_BgTaskSuccess()) {
    print "Background task completed successfully." . "\r\n";
}


 

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