Доступность iOS: проблема с методом хоста - PullRequest
1 голос
/ 21 сентября 2011

Я создал метод для проверки доступности хоста.Я скачал класс Reachability (оба .h & .m) с веб-сайтов разработчиков Apple и импортировал их в свой проект.Я передал имя 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 всегда равен нулю.Я предполагаю, что именно поэтому этот метод не работает.И я потратил 8 часов, чтобы выяснить проблему с этим кодом и найти этот сайт, однако я так и не смог найти проблему и решение.

Пожалуйста, помогите и высоко ценится.

Ответы [ 3 ]

1 голос
/ 23 июля 2012

Если вы хотите использовать http://www.google.com в качестве своего хоста, вы должны передать "google.com" в качестве имени хоста. Не включайте http://, косую черту или что-либо, что может следовать за косой чертой. www. хорошо включать.

[Reachability reachabilityWithHostName:@"google.com"];
1 голос
/ 20 декабря 2011

Удалите 'http://' из имени хоста.

0 голосов
/ 12 января 2015

Это код, который я использую для всех проверок соединений (см. Здесь: 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;
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...