嘿,我有一个程序需要判断在线图像是否存在,但我让它工作的唯一方法是将图像加载到 NSData 指针中并检查指针是否存在。
- (BOOL)exists {
NSString *filePath = @"http://couleeapps.hostei.com/BottomBox.png";
NSURL *url = [NSURL URLWithString:filePath];
NSData *imageData = [NSData dataWithContentsOfURL:url];
if (imageData) {
return YES;
}
return NO;
}
这对我有用,但我的问题是我的连接速度非常慢,并且下载图像需要很长时间。所以我的问题是:有没有办法检查图像是否(比如“http://couleeapps.hostei.com/BottomBox.png http://couleeapps.hostei.com/BottomBox.png") 是否可用,而无需以布尔报告器方法下载它?
非常感谢帮助
HiGuy
创建一个NSURLConnection
获取网址。设置HTTPMethod
of the NSURLRequest
to "HEAD"
代替"GET"
。在委托方法中connection:didReceiveResponse:
检查statusCode
of the NSHTTPURLResponse
对于 200 或其他成功响应。
-(void) queryResponseForURL:(NSURL *)inURL {
NSMutableURLRequest request = [NSMutableURLRequest requestWithURL:inURL];
[request setHTTPMethod:@"HEAD"];
NSURLConnection connection = [NSURLConnection connectionWithRequest:request delegate:self];
// connection starts automatically
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
if ( [(NSHTTPURLResponse *)response statusCode] == 200 ) {
// url exists
}
}
可能还有其他状态码 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes您将其视为成功,例如 301。
HTTP 协议的一部分是设置请求方式 http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods。 GET 和 POST 是最常见的两种,但还有其他几种,包括 HEAD。 HEAD 表示发送与 GET 相同的响应,但不发送正文。在你的例子中,主体是图像数据。因此,如果 HEAD 成功,您可以假设 GET 也会以相同的方式成功,至少在查找静态资源的情况下是这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)