Sample code for 30+ languages & platforms
Visual FoxPro

REST through SOCKS Proxy

See more REST Examples

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

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL loSocket
LOCAL lnBTls
LOCAL lnPort
LOCAL lnMaxWaitMs
LOCAL loAuthAws
LOCAL lcResponseXml
LOCAL loXml

lnSuccess = 0

* 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('Chilkat.Rest')
loSocket = CreateObject('Chilkat.Socket')

* 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.
lnBTls = 1
lnPort = 443
lnMaxWaitMs = 5000
lnSuccess = loSocket.Connect("s3.amazonaws.com",lnPort,lnBTls,lnMaxWaitMs)
IF (lnSuccess <> 1) THEN
    ? "Connect Failure Error Code: " + STR(loSocket.ConnectFailReason)
    ? loSocket.LastErrorText
    RELEASE loRest
    RELEASE loSocket
    CANCEL
ENDIF

* Use the proxied TLS connection:
lnSuccess = loRest.UseConnection(loSocket,1)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSocket
    CANCEL
ENDIF

* Provide AWS credentials for the REST call.
loAuthAws = CreateObject('Chilkat.AuthAws')
loAuthAws.AccessKey = "AWS_ACCESS_KEY"
loAuthAws.SecretKey = "AWS_SECRET_KEY"
loAuthAws.ServiceName = "s3"
lnSuccess = loRest.SetAuthAws(loAuthAws)

* List all buckets for the account...
lcResponseXml = loRest.FullRequestNoBody("GET","/")
IF (loRest.LastMethodSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSocket
    RELEASE loAuthAws
    CANCEL
ENDIF

loXml = CreateObject('Chilkat.Xml')
lnSuccess = loXml.LoadXml(lcResponseXml)

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

* Iterate over the buckets, showing each bucket name.
lnSuccess = loXml.FindChild2("Buckets")
IF (loXml.FirstChild2() = 1) THEN
    ? loXml.GetChildContent("Name")
    DO WHILE (loXml.NextSibling2() = 1)
        ? loXml.GetChildContent("Name")
    ENDDO
ENDIF

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

RELEASE loRest
RELEASE loSocket
RELEASE loAuthAws
RELEASE loXml