Ios 如何测试URL的可用性?
我找不到解决这个问题的简单方法。 我需要对我的URL进行简单的检查逻辑,并返回Ios 如何测试URL的可用性?,ios,objective-c,Ios,Objective C,我找不到解决这个问题的简单方法。 我需要对我的URL进行简单的检查逻辑,并返回YES(如果可用)或NO(如果不可用) 我发现: -(BOOL)connectedToNetwork { NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"]; NSData* data = [NSData dataWithContentsOfURL:url]; if (data != nil) re
YES
(如果可用)或NO
(如果不可用)
我发现:
-(BOOL)connectedToNetwork {
NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"];
NSData* data = [NSData dataWithContentsOfURL:url];
if (data != nil)
return YES;
return NO;
}
创立
但我需要更正确的答案
UPD
我找到了苹果
UPD1
在Thx all上找到答案
UPD2
需要更好的解决方案:
其原因很简单:
-(BOOL)connectedToNetwork {
NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"];
NSData* data = [NSData dataWithContentsOfURL:url];
if (data != nil)
return YES;
return NO;
}
创建的有效URL由以下字符组成:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=
您只需使用一个字符串检查功能来验证URL的字符是否插入或退出。首选方法是尝试连接,如果由于无法访问主机而导致连接失败,请检查并监视网络状态。看见如果网络状态表明可以访问主机,请重试 还有一些第三方LIB通过苹果的可达性接口实现了一个方便的API。我用它来检查可达性 Pod文件:
Pod“AFNetworking”
您必须在要使用的文件中包含AFNetworkReachabilityManager.h
这是一个示例,用于检查可达性的基本代码
// -- Start monitoring network reachability (globally available) -- //
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability changed: %@", AFStringFromNetworkReachabilityStatus(status));
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
// -- Reachable -- //
NSLog(@"Reachable");
break;
case AFNetworkReachabilityStatusNotReachable:
default:
// -- Not reachable -- //
NSLog(@"Not Reachable");
break;
}
}];
这是错误的,你的答案告诉他他是否连接到谷歌,而不是他的URL的有效性。小心,我不需要验证URL,我需要知道:“我是否可以获取数据?”如果你试图通过这种方式检查视频链接是否可用,你的用户会杀了你)@freeigname根据我的说法……如果他现在真的想检查主机是否可用……他应该使用reachability@Bhavin,我完全同意你的看法。我只是想说,OP实际上认为这是一个很好的工作解决方案,这就是为什么他/她将其作为答案发布。伙计们,我需要检查可用URL而不是验证。Ping Best comment“如果您只需要知道是否可以获取数据,HTTP支持称为“无内容”的头文件和专门用于此目的的HTTP方法…使用此方法不仅会阻止该线程,而且会浪费网络带宽和电池。糟糕。–@Michael Voznesensky“可能与-(BOOL)ConnectedNetwork重复{NSURL*url=[[NSURL alloc]initWithString:@;NSData*data=[NSData dataWithContentsOfURL:url];如果(data!=nil)返回YES;返回NO;}这是正确的答案。请先检查它。@AshokLondhe是正确的,但有一个缺点,请注意大家是如何下载它的url的。”如果你试图通过这种方式检查视频链接是否可用,你的用户会杀了你“,但由于简单的解决方案是最好的:)是的,可达性很好,但非常强大,我需要更简单的解决方案。@Bimawa这是最简单的解决方案;)我为你指手画脚:)还有一把枪在Sparrow上对不起,我不明白你的评论。对不起,我只是试着说这不是简单的解决方案。
// -- Start monitoring network reachability (globally available) -- //
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability changed: %@", AFStringFromNetworkReachabilityStatus(status));
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
// -- Reachable -- //
NSLog(@"Reachable");
break;
case AFNetworkReachabilityStatusNotReachable:
default:
// -- Not reachable -- //
NSLog(@"Not Reachable");
break;
}
}];