2011-03-30 68 views
0

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]]]];

感谢这么多提前!

回答

4

这个怎么样:

+ (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; 
} 

让我知道它是否适合你!

(请记住,这是一个同步请求,不应在主线程上执行)

+0

喜: 告诉我,如果即时通讯做错了什么: ' - (无效)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

+0

嗨,我再次改变了代码在我的一点,而不是使用“布尔”我使用另一个变量,只是给了我的错误代码和它的工作beautlifully! – Ponchotg 2011-03-30 16:37:21

+0

不要使用错误(在这段代码中的错误)来确定是否发生错误,但调用方法的返回值(无或NO意味着错误)。不能保证err是零,即使该方法工作得很好。 – 2011-04-13 16:48:07

0

我不得不改变线路:

return err!=nil && [res statusCode]!=404; 

return err==nil && [res statusCode]!=404; 

为正确的Bool返回。错误应该保持为零。

0

这种方法是不正确的,你应该避免同步呼叫,因为他们阻止。苹果说:简单地尝试等待回应。