Go
Go
REST through HTTP Proxy
See more REST Examples
Demonstrates how to connect through an HTTP proxy to make REST API calls.Chilkat Go Downloads
success := false
// 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 an HTTP proxy.
// It will connect to the Amazon AWS service for this example.
rest := chilkat.NewRest()
socket := chilkat.NewSocket()
// Set the HTTP proxy domain or IP address, and port.
socket.SetHttpProxyHostname("192.168.1.100")
socket.SetHttpProxyPort(8088)
// We want to tell the socket object that we're doing HTTP over the proxy connection.
// This is because an HTTP proxy used for other protocols (IMAP, SMTP, SSH, FTP, etc.)
// can require some internal differences in behavior (i.e. how we do things).
socket.SetHttpProxyForHttp(true)
// Other properties exist for specifying a proxy login, password, and authentication method (such as NTLM),
// but these are not used in this example.
// Connect through the HTTP proxy to the Amazon AWS server for the S3 service.
bTls := true
port := 443
maxWaitMs := 5000
success = socket.Connect("s3.amazonaws.com",port,bTls,maxWaitMs)
if success != true {
fmt.Println("Connect Failure Error Code: ", socket.ConnectFailReason())
fmt.Println(socket.LastErrorText())
rest.DisposeRest()
socket.DisposeSocket()
return
}
// Use the proxied TLS connection:
success = rest.UseConnection(socket,true)
if success != true {
fmt.Println(rest.LastErrorText())
rest.DisposeRest()
socket.DisposeSocket()
return
}
// Provide AWS credentials for the REST call.
authAws := chilkat.NewAuthAws()
authAws.SetAccessKey("AWS_ACCESS_KEY")
authAws.SetSecretKey("AWS_SECRET_KEY")
authAws.SetServiceName("s3")
success = rest.SetAuthAws(authAws)
// List all buckets for the account...
responseXml := rest.FullRequestNoBody("GET","/")
if rest.LastMethodSuccess() != true {
fmt.Println(rest.LastErrorText())
rest.DisposeRest()
socket.DisposeSocket()
authAws.DisposeAuthAws()
return
}
xml := chilkat.NewXml()
success = xml.LoadXml(*responseXml)
// Show the full XML returned.
fmt.Println(*xml.GetXml())
// Iterate over the buckets, showing each bucket name.
success = xml.FindChild2("Buckets")
if xml.FirstChild2() == true {
fmt.Println(*xml.GetChildContent("Name"))
for (xml.NextSibling2() == true) {
fmt.Println(*xml.GetChildContent("Name"))
}
}
// Move the internal pointer back to the root node.
xml.GetRoot2()
rest.DisposeRest()
socket.DisposeSocket()
authAws.DisposeAuthAws()
xml.DisposeXml()