Objective-C
Objective-C
Manually Follow HTTP Redirects
See more HTTP Examples
Demonstrates how to manually follow redirects for an HTTP GET.Chilkat Objective-C Downloads
#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;
}
}