我使用以下代码检查我的第一个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类来检查这个问题解决了这个问题。我只是想了解一下。
作为第一步,查看编码。
您可以在connectionstring创建后通过插入
记录编码NSLog(@"encoding: %@", [NSString localizedNameOfStringEncoding:encoding]);
插入你的代码。
为了进一步调试,你可以尝试先将url加载到NSData对象中,然后检查数据,最后从数据中创建一个NSString。
另一种解决方案:使用apple提供的Reachability类来检查网络连接。在这里,将Reachability类添加到您的项目中。
- (BOOL)isConnected
{
Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [reachability currentReachabilityStatus];
return !(networkStatus == NotReachable);
}
不使用google.com,而是使用任何本地客户端服务器测试url进行互联网检查,它也将非常快速响应相对于任何其他方式的互联网验证。