Objective c Xcode:在加载URL之前验证它
我很难找到一种方法来验证我应用程序上的url。Objective c Xcode:在加载URL之前验证它,objective-c,cocoa-touch,xcode,Objective C,Cocoa Touch,Xcode,我很难找到一种方法来验证我应用程序上的url。 我的目的是加载一个URL,同时查看是否存在其他网页,例如 加载 验证 如果folder1/2.pdf存在,则加载它,否则验证/folder2/1.pdf 到目前为止,为了能够更改pdf编号和文件夹,我正在像这样加载第一个pdf: int numpag=1 NSString*baseUrl=@”http://www.cronica.com.mx/iphone/pdf_iphone/"; [pdfView loadRequest:[NSURLReque
我的目的是加载一个URL,同时查看是否存在其他网页,例如 加载
验证
如果folder1/2.pdf存在,则加载它,否则验证/folder2/1.pdf 到目前为止,为了能够更改pdf编号和文件夹,我正在像这样加载第一个pdf:
int numpag=1
NSString*baseUrl=@”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;
}
让我知道它是否适合你
(请记住,这是一个同步请求,不应在主线程上执行)如何:
+ (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;
到
为正确的布尔返回。错误应该保持为零。这种方法不正确,您应该避免同步调用,因为它们正在阻塞。
苹果公司表示:只需尝试等待响应。这种方法是不正确的,你应该避免同步调用,因为它们正在阻塞。
苹果说:只要试着等待响应。嗨:告诉我我是否做错了什么:-(void)isvalidur:(NSURL*)url{NSLog(@“用站点%@\n启动”,url);NSURLRequest*req=[nsurlRequestWithURL:url];nshttpurresponse*res=nil;NSError*err=nil;[NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err];BOOL errono=err!=nil&[res statusCode]!=404;NSLog(@“gives error”%@),(errono?@“YES”:@“NO”);}
我总是得到关于“gives error”的响应否记录url确实无效,并尝试使用有效的url和相同的url。再次,我在if中稍微更改了代码,而不是使用“bool”,我使用的是另一个变量,它只是给出了错误代码及其工作方式,非常漂亮!不要使用错误(此代码段中的错误)要确定是否发生了错误,但调用方法的返回值(nil或NO意味着error)。即使该方法工作正常,也不能保证err为nil。如果您使用的是线程(不是sendSynchronousRequest:),请在此处通过“unforgiven3”查看答案:Hi:告诉我是否我做错了什么:-(void)isValidURL:(NSURL*)url{NSLog(@“使用站点%@\n启动”,url);NSURLRequest*req=[NSURLRequestWithURL:url];NSHTTPURLRResponse*res=nil;NSError*err=nil;[NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&error];BOOL error=nil&[res状态码]!=404;NSLog(@“给出错误”%@),(errono?@“YES”:@“NO”);}
我总是在“gives error”日志中得到响应NO该url确实无效,并尝试使用有效的url和相同的感谢代码。我再次在if中稍微更改了代码,而不是使用“bool”我正在使用另一个变量,它只是给我错误代码和它的工作非常漂亮!不要使用错误(此代码段中的err)来确定是否发生了错误,而是使用被调用方法的返回值(nil或NO means error)。即使该方法工作得很好,也不能保证err为nil。如果您使用的是线程(非sendSynchronousRequest:)然后在此处查看“unforgiven3”的答案: