Sample code for 30+ languages & platforms
Objective-C

Manually Follow HTTP Redirects

See more HTTP Examples

Demonstrates how to manually follow redirects for an HTTP GET.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoHttpResponse.h>
#import <NSString.h>

BOOL success = NO;

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

CkoHttp *http = [[CkoHttp alloc] init];

// 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 = NO;

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpNoBody: @"GET" url: @"http://yandex.ru/" response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

int status = [resp.StatusCode intValue];
NSLog(@"%@%d",@"HTTP Response Status: ",status);

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

int loopCount = 0;

while ((status == 302)) {

    NSLog(@"%@%@",@"Redirect URL: ",http.FinalRedirectUrl);

    NSString *nextUrl = http.FinalRedirectUrl;
    success = [http HttpNoBody: @"GET" url: nextUrl response: resp];
    if (success == NO) {
        NSLog(@"%@",http.LastErrorText);
        return;
    }

    status = [resp.StatusCode intValue];
    NSLog(@"%@%d",@"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) {
        NSLog(@"%@",@"Too many redirects.");
        return;
    }

}