Sample code for 30+ languages & platforms
Xbase++

Client Certificate in REST

See more REST Examples

Demonstrates how to use a client certificate with a REST connection.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oRest
LOCAL oSocket
LOCAL nBTls
LOCAL nPort
LOCAL nMaxWaitMs
LOCAL nBAutoReconnect
LOCAL cResponseJson

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

//  This example shows how to use the Chilkat socket object's connection.
oRest := CreateObject("Chilkat.Rest")
oSocket := CreateObject("Chilkat.Socket")

//  Set the certificate to be used for mutual TLS authentication
//  (i.e. sets the client-side certificate for two-way TLS authentication)
//  Note: There are other ways to set the client certificate using Chilkat.
//  For example, on Windows systems, a Chilkat certificate object could be loaded with certificate
//  pre-installed (with private key) in a Windows certificate store, and then socket.SetSslClientCert could be called.
nSuccess := oSocket:SetSslClientCertPfx("/home/bob/pfxFiles/myClientSideCertWithPrivateKey.pfx", "pfxPassword")
IF (nSuccess != 1)
    ? oSocket:LastErrorText
    oRest:destroy()
    oSocket:destroy()
    RETURN
ENDIF

//  Note: The certificate used for the client-side of TLS mutual authentication
//  must have the associated private key available. (.pfx/.p12 files typically store both
//  the certificate and associated private key.)

//  Establish the connection using the socket object (with client certificate authentication).
nBTls := 1
nPort := 443
nMaxWaitMs := 5000
nSuccess := oSocket:Connect("www.example.com", nPort, nBTls, nMaxWaitMs)
IF (nSuccess != 1)
    ? "Connect Failure Error Code: " + Str(oSocket:ConnectFailReason)
    ? oSocket:LastErrorText
    oRest:destroy()
    oSocket:destroy()
    RETURN
ENDIF

nBAutoReconnect := 1

//  Use the connection:
nSuccess := oRest:UseConnection(oSocket, nBAutoReconnect)
IF (nSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oSocket:destroy()
    RETURN
ENDIF

//  At this point we are connected and can make REST calls...
//  For example..
cResponseJson := oRest:FullRequestNoBody("GET", "/someQuery")
IF (oRest:LastMethodSuccess != 1)
    ? oRest:LastErrorText
    oRest:destroy()
    oSocket:destroy()
    RETURN
ENDIF

oRest:destroy()
oSocket:destroy()