如何测试URL或NOT的可用性?

时间:2015-04-30 05:39:12

标签: ios objective-c

我找不到这个问题的简单解决方案。 我需要为我的网址设置简单的检查逻辑并返回collect - 如果可用或YES - 如果没有。

我找到了什么:

NO

创立this 但我需要更正确的答案。

UPD

我找到了Apple的SimplePing

UPD1

SO Thx all上找到答案!

UPD2

更好的解决方案SimplePingHelper需要SimplePing

-(BOOL)connectedToNetwork  {
    NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"];
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data != nil)
        return YES;
    return NO;
}

4 个答案:

答案 0 :(得分:1)

首选方法是尝试连接,如果由于主机无法访问而失败,请检查并监控网络状态。见Reachability。如果网络状态指示可能已到达主机,请再试一次。

还有一些第三方库通过Apple的Reachability界面实现了一个方便的API。

答案 1 :(得分:1)

我使用AFNetworking来检查可达性。

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

    }];

答案 2 :(得分:0)

有效的网址由以下字符组成:

  ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=

您只需制作字符串检查功能即可验证您的网址字符是否正在落入或退出。

答案 3 :(得分:-1)

很简单:

- (void)tapPing {
    [SimplePingHelper ping:@"www.google.com"
        target:self sel:@selector(pingResult:)];
}

- (void)pingResult:(NSNumber*)success {
    if (success.boolValue) {
        [self log:@"SUCCESS"];
    } else {
        [self log:@"FAILURE"];
    }
}

成立this