Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective-C - Checking if URL exists

I have a for-loop that currently loops 4 times.

//Add all the URLs from the server to the array
    for (int i = 1; i <= 5; i++){
        NSString *tempString = [[NSString alloc] initWithFormat : @"http://photostiubhart.comoj.com/GalleryImages/%dstiubhart1.jpg", i];
        [myURLS addObject: [NSURL URLWithString:tempString]];
        [tempString release];
    }

As you can see the URL has a digit in it that get incremented by 1 each loop to create a new URL where the next image will be. However, the amount of images on the server won't necessarily be 4, it could be a lot more or even less. My problem is this, is there a way I can check if there is an image stored at the URL? And if there is not, break the loop and continue program execution?

Thanks,

Jack

like image 401
Jack Nutkins Avatar asked May 15 '11 12:05

Jack Nutkins


1 Answers

Here is idea to check with HTTP response

NSURLRequest *request;
NSURLResponse *response = nil;
NSError **error=nil; 
NSData *data=[[NSData alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:error]];
NSString* retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// you can use retVal , ignore if you don't need.
NSInteger httpStatus = [((NSHTTPURLResponse *)response) statusCode];
NSLog(@"responsecode:%d", httpStatus);
// there will be various HTTP response code (status)
// you might concern with 404
if(httpStatus == 404)
{
   // do your job
}

or

while(httpStatus == 200){
    static int increment = 0;
    increment++;
    // check other URL yoururl/somthing/increment++
}

but it will be slow. what my suggestion is, if you are using your own webserver, then, you can send all the image information initially. I'm sure you are doing this job on annonymous or other website :) Let me know if it helps you or not

like image 109
Mujah Maskey Avatar answered Sep 23 '22 15:09

Mujah Maskey