在iOS应用程序中加载http://www.google.com url的问题



我使用以下代码检查我的第一个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进行互联网检查,它也将非常快速响应相对于任何其他方式的互联网验证。

相关内容

最新更新