Xcode:在加载之前验证网址
问题描述:
Im在查找我的应用中的URL时验证一些问题。
我的意图是加载一个URL,同时查看是否存在其他网页。Xcode:在加载之前验证网址
负载http://mysite.com/folder1/1.pdf
验证http://mysite.com/folder1/2.pdf
如果文件夹1/2.pdf存在,那么加载它,否则验证/folder2/1.pdf
到目前为止IM加载的第一个PDF像这样为了能改变PDF号码和文件夹:
int numpag = 1;
NSString *baseUrl [email protected]"http://www.cronica.com.mx/iphone/pdf_iphone/";
[pdfView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[baseUrl stringByAppendingFormat:@"folder1/%d.pdf", numpag]]]];
感谢这么多提前!
答
这个怎么样:
+ (BOOL)isValidURL:(NSURL*)url
{
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSHTTPURLResponse *res = nil;
NSError *err = nil;
[NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];
return err!=nil && [res statusCode]!=404;
}
让我知道它是否适合你!
(请记住,这是一个同步请求,不应在主线程上执行)
答
我不得不改变线路:
return err!=nil && [res statusCode]!=404;
到
return err==nil && [res statusCode]!=404;
为正确的Bool返回。错误应该保持为零。
答
这种方法是不正确的,你应该避免同步呼叫,因为他们阻止。苹果说:简单地尝试等待回应。
喜: 告诉我,如果即时通讯做错了什么: ' - (无效)isValidURL:(NSURL *)网址 { 的NSLog(@ “与站点%@ \ n启动”,网址); NSURLRequest * req = [NSURLRequest requestWithURL:url]; NSHTTPURLResponse * res = nil; NSError * err = nil; [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err]; BOOL errono = err!= nil && [res statusCode]!= 404; (@“给出错误?%@”,(errono?@“YES”:@“NO”)); }' }我allways得到回应没有“给出错误”日志url是真的无效,并尝试allso与一个有效的和 感谢 – Ponchotg 2011-03-30 16:28:54
嗨,我再次改变了代码在我的一点,而不是使用“布尔”我使用另一个变量,只是给了我的错误代码和它的工作beautlifully! – Ponchotg 2011-03-30 16:37:21
不要使用错误(在这段代码中的错误)来确定是否发生错误,但调用方法的返回值(无或NO意味着错误)。不能保证err是零,即使该方法工作得很好。 – 2011-04-13 16:48:07