我在第一个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
}
问题在于印度和美国它正在进入其他条件,但在比利时它将进入如果条件并且投掷错误。那么谷歌在比利时是否有任何限制?
如果标记错误,请指导我。在我当前的版本中,通过使用Rechability类来检查这个问题来解决这个问题。我想知道它。提前谢谢。
答案 0 :(得分:0)
作为第一步,请查看编码。
您可以通过插入
在创建connectionstring之后立即记录编码NSLog(@"encoding: %@", [NSString localizedNameOfStringEncoding:encoding]);
进入你的代码。
为了进一步调试,您可以先尝试将url加载到NSData对象中,然后检查数据,最后从数据中创建一个NSString。
答案 1 :(得分:0)
替代解决方案:检查互联网连接使用apple提供的Reachability类。 下载Apple Sample Here,将Reachability类添加到您的项目中。
- (BOOL)isConnected
{
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
return !(networkStatus == NotReachable);
}
答案 2 :(得分:0)
使用任何本地客户端服务器测试网址进行互联网检查,而不是使用google.com,相对于任何其他互联网验证方式,它也会非常快速响应。