1

我在我的第一个 iOS 应用程序(大约 3 年前)中使用以下代码检查互联网连接。

NSError *err = nil;
NSStringEncoding encoding;

NSString * connectionstring = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"] usedEncoding:&encoding error:&err];

if(connectionstring.length ==0)
{
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Occured" message:@"No Internet Connection." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
else
{
    // loading another screen
}

问题出在印度和美国,它进入else 条件,但在比利时,它进入if 条件并抛出错误。那么在比利时对谷歌有什么限制吗?

如果标记不正确,请指导我。在我当前的版本中,通过使用 Rechability 类来检查这个问题来解决这个问题。只是我想知道它。提前致谢。

4

3 回答 3

0

与其使用 google.com,不如使用任何本地客户端服务器测试 url 进行互联网检查,与任何其他互联网验证方式相比,它的响应速度也非常快。

于 2013-03-18T07:11:43.577 回答
0

第一步,查看编码。

您可以在通过插入创建连接字符串后立即记录编码

NSLog(@"encoding: %@", [NSString localizedNameOfStringEncoding:encoding]);

进入你的代码。

为了进一步调试,您可以尝试先将 url 加载到 NSData 对象中,然后检查数据,最后从数据中创建 NSString。

于 2013-03-18T06:47:11.190 回答
0

替代解决方案:检查互联网连接使用苹果提供的可达性类。下载 Apple Sample Here,将 Reachability 类添加到您的项目中。

- (BOOL)isConnected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-03-18T06:47:33.103 回答