Sample code for 30+ languages & platforms
Lianja

REST through SOCKS Proxy

See more REST Examples

Demonstrates how to connect through a SOCKS proxy to make REST API calls.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

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

// This example connects to a REST server through a SOCKS proxy.
// It will connect to the Amazon AWS service for this example.
loRest = createobject("CkRest")
loSocket = createobject("CkSocket")

// Set the SOCKS proxy domain or IP address, port, and SOCKS version number (4 or 5)
loSocket.SocksHostname = "192.168.1.100"
loSocket.SocksPort = 1080
loSocket.SocksVersion = 5
// Other properties exist for specifying a SOCKS proxy login and password,
// but these are not used in this example.

// Connect through the HTTP proxy to the Amazon AWS server for the S3 service.
llBTls = .T.
lnPort = 443
lnMaxWaitMs = 5000
llSuccess = loSocket.Connect("s3.amazonaws.com",lnPort,llBTls,lnMaxWaitMs)
if (llSuccess <> .T.) then
    ? "Connect Failure Error Code: " + str(loSocket.ConnectFailReason)
    ? loSocket.LastErrorText
    release loRest
    release loSocket
    return
endif

// Use the proxied TLS connection:
llSuccess = loRest.UseConnection(loSocket,.T.)
if (llSuccess <> .T.) then
    ? loRest.LastErrorText
    release loRest
    release loSocket
    return
endif

// Provide AWS credentials for the REST call.
loAuthAws = createobject("CkAuthAws")
loAuthAws.AccessKey = "AWS_ACCESS_KEY"
loAuthAws.SecretKey = "AWS_SECRET_KEY"
loAuthAws.ServiceName = "s3"
llSuccess = loRest.SetAuthAws(loAuthAws)

// List all buckets for the account...
lcResponseXml = loRest.FullRequestNoBody("GET","/")
if (loRest.LastMethodSuccess <> .T.) then
    ? loRest.LastErrorText
    release loRest
    release loSocket
    release loAuthAws
    return
endif

loXml = createobject("CkXml")
llSuccess = loXml.LoadXml(lcResponseXml)

// Show the full XML returned.
? loXml.GetXml()

// Iterate over the buckets, showing each bucket name.
llSuccess = loXml.FindChild2("Buckets")
if (loXml.FirstChild2() = .T.) then
    ? loXml.GetChildContent("Name")
    do while (loXml.NextSibling2() = .T.)
        ? loXml.GetChildContent("Name")
    enddo
endif

// Move the internal pointer back to the root node.
loXml.GetRoot2()


release loRest
release loSocket
release loAuthAws
release loXml