Sample code for 30+ languages & platforms
AutoIt Requires Chilkat v11.0.0+

REST through SSH Tunnel

See more REST Examples

Demonstrates how to connect through an SSH Tunnel (via port-forwarding) to make REST API calls.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oTunnel = ObjCreate("Chilkat.Socket")

Local $sshHostname = "sftp.example.com"
Local $iSshPort = 22

;  Connect to an SSH server and establish the SSH tunnel:
$bSuccess = $oTunnel.SshOpenTunnel($sshHostname,$iSshPort)
If ($bSuccess = False) Then
    ConsoleWrite($oTunnel.LastErrorText & @CRLF)
    Exit
EndIf

;  Authenticate with the SSH server via a login/password
;  or with a public key.
;  This example demonstrates SSH password authentication.
$bSuccess = $oTunnel.SshAuthenticatePw("mySshLogin","mySshPassword")
If ($bSuccess = False) Then
    ConsoleWrite($oTunnel.LastErrorText & @CRLF)
    Exit
EndIf

;   OK, the SSH tunnel is setup.  Now open a channel within the tunnel.
;   (Any number of channels may be created from the same SSH tunnel.
;   Multiple channels may coexist at the same time.)

;  This example connects to a REST server through the SSH tunnel.
;  It will connect to the Amazon AWS service for this example.
$oRest = ObjCreate("Chilkat.Rest")

Local $bTls = True
Local $iPort = 443
Local $iMaxWaitMs = 5000

;  This returns a socket object that is a single channel within the SSH tunnel.
$oChannel = ObjCreate("Chilkat.Socket")
$bSuccess = $oTunnel.SshNewChannel("s3.amazonaws.com",$iPort,$bTls,$iMaxWaitMs,$oChannel)
If ($bSuccess = False) Then
    ConsoleWrite($oTunnel.LastErrorText & @CRLF)
    Exit
EndIf

;  Use the connection.  (This connection is a TLS running on an SSH channel through an SSH tunnel.
;  In other words, TLS is wrapped within the SSH tunnel.)
$bSuccess = $oRest.UseConnection($oChannel,True)
If ($bSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

;  Provide AWS credentials for the REST call.
$oAuthAws = ObjCreate("Chilkat.AuthAws")
$oAuthAws.AccessKey = "AWS_ACCESS_KEY"
$oAuthAws.SecretKey = "AWS_SECRET_KEY"
$oAuthAws.ServiceName = "s3"
$bSuccess = $oRest.SetAuthAws($oAuthAws)

;  List all buckets for the account...
Local $sResponseXml = $oRest.FullRequestNoBody("GET","/")
If ($oRest.LastMethodSuccess <> True) Then
    ConsoleWrite($oRest.LastErrorText & @CRLF)
    Exit
EndIf

$oXml = ObjCreate("Chilkat.Xml")
$bSuccess = $oXml.LoadXml($sResponseXml)

;  Show the full XML returned.
ConsoleWrite($oXml.GetXml() & @CRLF)

;  Iterate over the buckets, showing each bucket name.
$bSuccess = $oXml.FindChild2("Buckets")
If ($oXml.FirstChild2() = True) Then
    ConsoleWrite($oXml.GetChildContent("Name") & @CRLF)
    While ($oXml.NextSibling2() = True)
        ConsoleWrite($oXml.GetChildContent("Name") & @CRLF)
    Wend
EndIf

;  Move the internal pointer back to the root node.
$oXml.GetRoot2