Sample code for 30+ languages & platforms
Rust

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Rust Downloads

Rust

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

let http = chilkat::Http::new();

// 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.set_follow_redirects(false);

let resp = chilkat::HttpResponse::new();
if http.http_no_body("GET", "http://yandex.ru/", &resp).is_err() {
    println!("{}", http.last_error_text());
    return;
}

let mut status = resp.status_code();
println!("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.

let mut loop_count = 0;

while status == 302 {

    println!("Redirect URL: {}", http.final_redirect_url());

    let next_url = http.final_redirect_url();
    if http.http_no_body("GET", &next_url, &resp).is_err() {
        println!("{}", http.last_error_text());
        return;
    }

    status = resp.status_code();
    println!("HTTP Response Status: {}", status);

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

}