SQL Server Stored Procedure Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

SQL Server
Stored Procedure Examples

Quick Start
Encryption
File Access
IMAP
POP3
SMTP
Email Object
FTP
HTML-to-XML
HTTP
MHT
MIME
RSA Encryption
Socket
Spider
String
Tar
Upload
XML
XMP
Zip

Byte Array
RSS
Atom
Self-Extractor

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

CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int

    --  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.)
    DECLARE @certStore int
    EXEC @hr = sp_OACreate 'Chilkat.CertStore', @certStore OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  The 1st argument is the filename, the 2nd arg is the
    --  PFX file's password:
    EXEC sp_OAMethod @certStore, 'LoadPfxFile', @success OUT, 'chilkat.pfx', 'secret'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @certStore, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    DECLARE @cert int

    EXEC sp_OAMethod @certStore, 'FindCertBySubjectCN', @cert OUT, 'Chilkat Software, Inc.'
    IF @cert Is NULL 
      BEGIN
        EXEC sp_OAGetProperty @certStore, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      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:
    DECLARE @cert2 int
    EXEC @hr = sp_OACreate 'Chilkat.Cert', @cert2 OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  The 1st argument is the filename, the 2nd arg is the
    --  PFX file's password:
    EXEC sp_OAMethod @cert2, 'LoadPfxFile', @success OUT, 'chilkat.pfx', 'secret'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @cert2, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  Any string unlocks the component for the 1st 30-days.
    EXEC sp_OAMethod @http, 'UnlockComponent', @success OUT, 'Anything for 30-day trial'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END

    --  Set your HTTPS client certificate:
    EXEC sp_OAMethod @http, 'SetSslClientCert', NULL, @cert

    --  Build a HTTPS upload request with the files to be uploaded:
    DECLARE @req int
    EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @req, 'UseUpload', NULL

    --  The URL we'll be posting to is:
    --  http://www.yourwebserver123abc.com/ConsumeUpload.aspx
    --  Therefore, the path part of the URL is:
    EXEC sp_OASetProperty @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.
    EXEC sp_OAMethod @req, 'AddFileForUpload', @success OUT, 'file1', 'hamlet.xml'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @req, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      END
    EXEC sp_OAMethod @req, 'AddFileForUpload', @success OUT, 'file2', 'dude.gif'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @req, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        RETURN
      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.
    DECLARE @domain nvarchar(4000)

    DECLARE @port int

    DECLARE @ssl int

    SELECT @domain = 'www.yourwebserver123abc.com'
    --  The only difference in coding between non-SSL and SSL is
    --  the setting of these two arguments to SynchronousRequest:
    SELECT @port = 443
    SELECT @ssl = 1
    DECLARE @resp int

    EXEC sp_OAMethod @http, 'SynchronousRequest', @resp OUT, @domain, @port, @ssl, @req
    IF @resp Is NULL 
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT

        PRINT @sTmp0
      END
    ELSE
      BEGIN
        --  Display the HTML source of the page returned.
        EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT

        PRINT @sTmp0
      END
END
GO

 

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

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