【问题标题】:iOS Reachability: Problem with host MethodiOS 可达性:主机方法的问题
【发布时间】:2011-09-21 14:35:29
【问题描述】:

我创建了一个方法来检查主机是否可达。我已经从苹果开发者网站下载了可达性类(.h 和 .m)并导入到我的项目中。我已将 NSString 名称作为 URL(主机名)传递。主机名是http://www.google.com。但是,无论我将什么主机名传递给此方法,它总是返回 NO (connectToHost)。代码如下:

- (BOOL) checkHostAvailability:(NSString *)Name{
        BOOL connectToHost;
        hostReach = [[Reachability reachabilityWithHostName:Name] retain];
        [hostReach startNotifier];

        NetworkStatus hostStatus = [hostReach currentReachabilityStatus];
        NSLog(@"Name: %@", Name);
        NSLog(@"hostStatus is %@", hostStatus);

        if(hostStatus == NotReachable){
                NSLog(@"Here is the checkHostAvailability Method and host NOT reachable");
                connectToHost = NO;
       }else{
                NSLog(@"Here is the checkHostAvailability Method and host is reachable");
                connectToHost = YES;
       }
       return connectToHost;


}

经过几个小时的调查,我发现 NetworkStatus hostStatus 始终等于 null。我认为这就是为什么这种方法不起作用的原因。我花了 8 个小时找出这段代码的问题并搜索了这个网站,但我仍然找不到问题和解决方案。

请提供帮助,非常感谢。

【问题讨论】:

    标签: ios host reachability


    【解决方案1】:

    从主机名中删除“http://”。

    【讨论】:

      【解决方案2】:

      如果您想使用http://www.google.com 作为您的主机,您可以传递“google.com”作为主机名。不要包括http://、结尾斜线或任何可能跟在结尾斜线后面的东西。 www. 可以包含在内。

      [Reachability reachabilityWithHostName:@"google.com"];
      

      【讨论】:

        【解决方案3】:

        这是我用于所有连接检查的代码(参见此处:iOS Developer Library -Reachability),它对我来说工作正常:

        -(BOOL) hasConnection{
        
        //check network status _ iphone settings
        Reachability *internetReachability = [Reachability reachabilityForInternetConnection];
        [internetReachability startNotifier];
        
        
        NetworkStatus status=[internetReachability currentReachabilityStatus];
        if (status == NotReachable) {
            NSLog(@"No internet");
            //[internetReachability stopNotifier];
            return NO;
        }else {
            NSLog(@"Internet is ON");
           // [internetReachability stopNotifier];
        
            //check internet connection _reachable path
        
            Reachability *hostReachable=[Reachability   reachabilityWithHostName:@"www.apple.com"];
            BOOL connectionRequired =[hostReachable connectionRequired];
            NSLog(@"%hhd",connectionRequired);
        
            [hostReachable startNotifier];
        
            Reachability *wifiReachability=[Reachability reachabilityForLocalWiFi];
            [wifiReachability startNotifier];
        
            NetworkStatus hostStatus=[hostReachable currentReachabilityStatus];
            if(hostStatus == NotReachable){
                NSLog(@"No internet connection");
                [hostReachable stopNotifier];
                return NO;
            }else{
                NSLog(@"Connection is ok");
                [hostReachable stopNotifier];
                return YES;
            }
        }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-24
          • 1970-01-01
          相关资源
          最近更新 更多