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 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.

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;
    }

}