Objective-C - Checking if URL exists

匿名 (未验证) 提交于 2019-12-03 02:14:01

问题:

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

回答1:

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



回答2:

Here is simplest way to check if URL is valid:

NSURL *URL = [NSURL URLWithString:@"www.your.unvalidated.yet/url"];  if ( [[UIApplication sharedApplication] canOpenURL:[URL absoluteURL]] ) {      //your link is ok } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!