用于域的网络可达性管理器-尽管有强制门户,但始终可达



我正在使用AFNetworking的可达性管理器来监视特定域的可达性,如下所示:

reachabilityManager = [AFNetworkReachabilityManager managerForDomain:@"www.xyz.com"];
[reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusReachableViaWWAN:
                case AFNetworkReachabilityStatusReachableViaWiFi:
                    DLog(@"***became reachable***");
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                default:
                    DLog(@"***became UNreachable***");
                    break;
            }
        }];
[reachabilityManager startMonitoring];

它工作良好,除非设备连接到强制门户/网络并禁用所有其他数据。由于某种原因,管理员认为设备处于可访问状态,尽管事实上域是不可访问的(如果要在浏览器中输入相应的URL,它将重定向到强制门户的登录页面)。

我做错了什么吗?如果不是,有没有别的办法?

谢谢!

不幸的是,可达性只是检查一个特定的主机或dns名称是否响应。正如您在浏览器中看到的那样,强制门户的工作方式是响应所有请求,以便无论用户试图访问哪个站点都能显示登录页面。可达性表示这个域是可达的,因为它得到了响应。它无法区分"真实"响应和捕获门户之间的区别。

你需要让你的代码尝试从你的网站上检索一个已知的信息片段,当它是"可访问的"——像"http://example.com/signature.txt",其中签名。txt包含你可以检查的文本。如果你得到了适当的值,那么你就知道你真的在和你的网站说话。如果不是,那么它可能是一个强制门户

相关内容

  • 没有找到相关文章

最新更新