Visual C++ Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Visual C++ Examples

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


More Examples...
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 C++ Libraries for VC++ 8.0 / Win32

Download Chilkat C++ Libraries for VC++ 7.0 / Win32

Download Chilkat C++ Libraries for VC++ 6.0 / Win32

#include <CkCertStore.h>
#include <CkCert.h>
#include <CkHttp.h>
#include <CkHttpRequest.h>
#include <CkString.h>
#include <CkHttpResponse.h>

void ChilkatSample(void)
    {
    bool success;

    //  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.)
    CkCertStore certStore;
    //  The 1st argument is the filename, the 2nd arg is the
    //  PFX file's password:
    success = certStore.LoadPfxFile("chilkat.pfx","secret");
    if (success != true) {
        printf("%s\n",certStore.lastErrorText());
        return;
    }

    CkCert *cert = 0;
    cert = certStore.FindCertBySubjectCN("Chilkat Software, Inc.");
    if (cert == 0 ) {
        printf("%s\n",certStore.lastErrorText());
        return;
    }

    //  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:
    CkCert cert2;
    //  The 1st argument is the filename, the 2nd arg is the
    //  PFX file's password:
    success = cert2.LoadPfxFile("chilkat.pfx","secret");
    if (success != true) {
        printf("%s\n",cert2.lastErrorText());
        return;
    }

    CkHttp http;

    //  Any string unlocks the component for the 1st 30-days.
    success = http.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        printf("%s\n",http.lastErrorText());
        return;
    }

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

    //  Build a HTTPS upload request with the files to be uploaded:
    CkHttpRequest req;
    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 != true) {
        printf("%s\n",req.lastErrorText());
        return;
    }

    success = req.AddFileForUpload("file2","dude.gif");
    if (success != true) {
        printf("%s\n",req.lastErrorText());
        return;
    }

    //  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.
    CkString domain;
    int port;
    bool ssl;
    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 = true;
    CkHttpResponse *resp = 0;
    resp = http.SynchronousRequest(domain,port,ssl,req);
    if (resp == 0 ) {
        printf("%s\n",http.lastErrorText());
    }
    else {
        //  Display the HTML source of the page returned.
        printf("%s\n",resp->bodyStr());
    }

    }

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

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

Mail Component · .NET Mail Component · XML Parser