Delphi Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA
SSH Key
SSH
SSH Tunnel
SFTP

Unreleased...
Bzip2
LZW
Bz2
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

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 HTTP ActiveX

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
certStore: CHILKATCERTIFICATELib_TLB.IChilkatCertStore;
cert: IChilkatCert;
cert2: TChilkatCert;
http: TChilkatHttp;
req: TChilkatHttpRequest;
domain: String;
port: Integer;
ssl: Integer;
resp: IChilkatHttpResponse;

begin


//  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 := CoChilkatCertStore.Create();
//  The 1st argument is the filename, the 2nd arg is the
//  PFX file's password:
success := certStore.LoadPfxFile('chilkat.pfx','secret');
if (success <> 1) then
  begin
    ShowMessage(certStore.LastErrorText);

  end;

cert := certStore.FindCertBySubjectCN('Chilkat Software, Inc.');
if (cert = nil ) then
  begin
    ShowMessage(certStore.LastErrorText);

  end;

//  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 := TChilkatCert.Create(Self);
//  The 1st argument is the filename, the 2nd arg is the
//  PFX file's password:
success := cert2.LoadPfxFile('chilkat.pfx','secret');
if (success <> 1) then
  begin
    ShowMessage(cert2.LastErrorText);

  end;

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

  end;

//  Set your HTTPS client certificate:
http.SetSslClientCert(cert);

//  Build a HTTPS upload request with the files to be uploaded:
req := TChilkatHttpRequest.Create(Self);
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.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) then
  begin
    ShowMessage(req.LastErrorText);

  end;
success := req.AddFileForUpload('file2','dude.gif');
if (success <> 1) then
  begin
    ShowMessage(req.LastErrorText);

  end;

//  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.DefaultInterface);
if (resp = nil ) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
  end
else
  begin
    //  Display the HTML source of the page returned.
    Memo1.Lines.Add(resp.BodyStr);
  end;
end;

 

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

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

Mail Component · .NET Email Component · XML Parser