Xbase++
Xbase++
Client Certificate in REST
See more REST Examples
Demonstrates how to use a client certificate with a REST connection.Chilkat Xbase++ Downloads
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()