繁体   English   中英

NSURL有时会因几次尝试而使找不到远程服务器错误

[英]NSURL is sometimes giving remote server not found error for few initial attempts

我在目标C中有一个奇怪的问题。

我有这个代码片段。 问题是,当我在Iphone或ipad上启动应用程序4-5次时,找不到远程服务器,并且在杀死该应用程序4-5次后一切正常。 服务器可用,并且能够从移动Safari浏览。

任何帮助将不胜感激。

NSURL *scriptUrl = [NSURL URLWithString:@"https://www.zzzzzz-zz.zzzzzz-zzzz.com/zzzzz/"];
NSData *data = [NSData dataWithContentsOfURL:scriptUrl];
if (data)
{
    //COMPAS is reachable
    NSLog(@"Device is connected to the internet");
}
else
{
    //COMPAS is not reachable
    NSLog(@"Device is connected to the internet");
    [self performSelectorOnMainThread:@selector(showHostAlert:) withObject:nil waitUntilDone:NO];
}

我的建议是使用NSURLConnection或NSURLSession获取数据。 除本地URL之外,使用contentsOfURL的类(如NSData,NSString等)的工厂方法不能很好地工作。 如果从远程URL获取数据时出现错误,则不会显示错误状态。

因此,继续使用连接或会话类进行请求,然后使用它们在完成时提供的数据。 如果未获取数据,请检查这些类将提供的NSError对象。

NSData上的dataWithContentsOfUrl方法仅可用于从本地资源加载数据。

  • 您可以使用NSUrl使用NSUrlRequest对象,然后使用NSUrlConnection发出请求。
  • 您也可以使用NSUrlSession对象

同步获取数据的示例:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverAddress]
                                cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];

[request setHTTPMethod: @"GET"];

NSError *requestError;
NSURLResponse *urlResponse = nil;

NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError]; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM