Perl Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Perl Examples

Quick Start
Perl Unicode
Perl Byte Array
Perl Certs
Perl Email
Perl Encryption
Perl FTP
HTML-to-XML
Perl HTTP
Perl IMAP
Perl MHT
Perl MIME
Perl RSA
Perl S/MIME
Perl Signatures
Perl Socket
Perl Spider
Perl Tar
Perl Upload
Perl XML
Perl XMP
Perl Zip

More Examples...
String
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor

Unreleased...
Service
PPMD
Deflate
Bzip2
LZW
Bz2
DH Key Exchange
DSA
Icon

 

 

 

 

 

 

 

HTTPS Upload with Client SSL Certificate

This example shows how to use a client-side certificate with HTTPS to upload one or more files to a web server.

Download Chilkat Perl Module

use chilkat;



#  Chilkat supports SSL with all of its Internet components:
#  SMTP, POP3, IMAP, FTP, and HTTP.

#  Each component includes a method named SetSslClientCert
#  which has one argument -- a Chilkat certificate object.
#  You'll need to use a certificate where you have
#  a private key.  There are many ways to instantiate
#  and load a certificate into a Chilkat certificate object.
#  It may be loaded directly from a .pfx (or .p12) file.
#  It may be loaded from a certificate that has already
#  been installed into the local machine's (registry-based)
#  certificate store, or the current-user certificate store.
#  It may be loaded from a pair of PEM or DER encoded files
#  (one file for the ceritifcate, and one for the corresponding
#  private key).  Browse through the examples at
#  example-code.com for various examples (in the Digital
#  Certificates section).

#  This example will load a cert from a .pfx (i.e. p12) file.

#  Create an instance of a certificate store object, load a PFX file,
#  locate the certificate we need, and use it for signing.
#  (a PFX file may contain more than one certificate.)
$certStore = new chilkat::CkCertStore();
#  The 1st argument is the filename, the 2nd arg is the
#  PFX file's password:
$success = $certStore->LoadPfxFile("chilkat.pfx","secret");
if ($success != 1) {
    print $certStore->lastErrorText() . "\n";
    exit;
}

$cert = $certStore->FindCertBySubjectCN("Chilkat Software, Inc.");
if ($cert eq null ) {
    print $certStore->lastErrorText() . "\n";
    exit;
}

#  If a PFX file is known to contain a single certificate,
#  you may load it directly into a Chilkat certificate object.
#  This snippet of source code shows how:
$cert2 = new chilkat::CkCert();
#  The 1st argument is the filename, the 2nd arg is the
#  PFX file's password:
$success = $cert2->LoadPfxFile("chilkat.pfx","secret");
if ($success != 1) {
    print $cert2->lastErrorText() . "\n";
    exit;
}

$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;
}

#  Set your HTTPS client certificate:
$http->SetSslClientCert($cert);

#  Build a HTTPS upload request with the files to be uploaded:
$req = new chilkat::CkHttpRequest();
$req->UseUpload();

#  The URL we'll be posting to is:
#  http://www.yourwebserver123abc.com/ConsumeUpload.aspx
#  Therefore, the path part of the URL is:
$req->put_Path("/ConsumeUpload.aspx");

#  Note: You'll need to edit this example to upload to your
#  own web server.

#  Add some files to the request:
#  The 1st argument is an arbitrary name.  It's the POST form field name.
#  The 2nd argument is the filename currently existing on
#  the local filesystem.  It may include an absolute or relative
#  path, or no path at all if it's in the current working directory.
$success = $req->AddFileForUpload("file1","hamlet.xml");
if ($success != 1) {
    print $req->lastErrorText() . "\n";
    exit;
}

$success = $req->AddFileForUpload("file2","dude.gif");
if ($success != 1) {
    print $req->lastErrorText() . "\n";
    exit;
}

#  Send the HTTPS POST and get the response.  Note: This is a blocking call.
#  The method does not return until the full HTTPS response is received.

$domain = "www.yourwebserver123abc.com";
#  The only difference in coding between non-SSL and SSL is
#  the setting of these two arguments to SynchronousRequest:
$port = 443;
$ssl = 1;

$resp = $http->SynchronousRequest($domain,$port,$ssl,$req);
if ($resp eq null ) {
    print $http->lastErrorText() . "\r\n";
}
else {
    #  Display the HTML source of the page returned.
    print $resp->bodyStr() . "\r\n";
}

 

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

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