Sample code for 30+ languages & platforms
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

Go
    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()