Sample code for 30+ languages & platforms
Swift

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

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

    let http = CkoHttp()!

    // The FollowRedirects property controls whether redirects
    // are automatically followed.  The default behavior is to
    // automatically follow redirects.

    // Explicitly set FollowRedirects so that redirects are NOT automatically taken:
    http.followRedirects = false

    let resp = CkoHttpResponse()!
    success = http.httpNoBody(verb: "GET", url: "http://yandex.ru/", response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    var status: Int = resp.statusCode.intValue
    print("HTTP Response Status: \(status)")

    // The FinalRedirectUrl property will contain the redirect URL
    // If FollowRedirects was equal to true, then all of the 
    // intermediate redirects (if any) would be followed until
    // there were no more redirects.  However, because 
    // FollowRedirects is not true, FinalRedirectUrl contains
    // the next redirect URL.

    var loopCount: Int = 0

    while (status == 302) {

        print("Redirect URL: \(http.finalRedirectUrl!)")

        var nextUrl: String? = http.finalRedirectUrl
        success = http.httpNoBody(verb: "GET", url: nextUrl, response: resp)
        if success == false {
            print("\(http.lastErrorText!)")
            return
        }

        status = resp.statusCode.intValue
        print("HTTP Response Status: \(status)")

        // For safety, prevent infinite loops by
        // keeping a loopCount and only allows following a max 
        // of 10 redirects:
        loopCount = loopCount + 1
        if loopCount > 10 {
            print("Too many redirects.")
            return
        }

    }


}