Objective c NSURLConnection未给出错误,internet连接已禁用?

Objective c NSURLConnection未给出错误,internet连接已禁用?,objective-c,ios,nsconnection,Objective C,Ios,Nsconnection,只是想知道下面的代码。。。当我关闭internet连接并运行它时,我希望在控制台日志中显示“连接失败”。有人能解释为什么我不在吗?谢谢 NSString *urlString = [NSString stringWithFormat:@"http://www.myurl.com/RSS/feed.xml"]; NSURL *serviceURL = [NSURL URLWithString:urlString]; //Create the request NSURLRequest *requ

只是想知道下面的代码。。。当我关闭internet连接并运行它时,我希望在控制台日志中显示“连接失败”。有人能解释为什么我不在吗?谢谢

NSString *urlString = [NSString stringWithFormat:@"http://www.myurl.com/RSS/feed.xml"];

NSURL *serviceURL = [NSURL URLWithString:urlString];

//Create the request
NSURLRequest *request = [NSURLRequest requestWithURL:serviceURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];

//Create the connection and send the request
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];


//Make sure the connection is good
if (connection) {
    //instantiate the responseData structure to store the response
    self.responseData = [NSMutableData data];

}
else {
    NSLog(@"Connection failed");
}

您实际上还没有尝试提出请求<代码>如果(连接)不测试请求是否成功,它只测试您是否能够创建表示连接的对象。您仍然需要调用其中一个方法来发出请求。有关详细信息,请参阅。

如果要检查连接本身是否失败,而不是连接对象的创建是否失败,请使用委托,如下所示:

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
        NSLog("Oh noes D=");
}

隐马尔可夫模型。。你能告诉我如何测试它是否成功吗?我尝试了if([NSURLConnection canHandleRequest:request]),但似乎不起作用。如果要发送异步请求,则需要实现委托方法
connection:didFailWithError:
。感谢您提供的信息。回复:评论如下。。即使关闭WiFi,didReceiveData似乎也能正常工作。这就是我关于缓存的意思。我现在看到,即使页面返回404,它也会接收数据。您能告诉我常用的方法是什么来确保您已经返回了您要查找的完整文件吗?
NSHTTPURLResponse
有一个
statusCode
属性,它对应于HTTP响应状态。200是成功响应的常用值,404是丢失文档的常用值。还有其他的可能性。你应该参考看看标准代码是什么。我按照你的建议实现了这个委托方法。。。但它仍然没有在关闭互联网的情况下启动?我在你的代码中看到你确实在将委托设置为self,因此如果该函数没有启动,我无法告诉你问题是什么。。您是否也在实现其他委托方法?(didFinishLoading和DidReceiveData)无论发生什么情况,3个选项中的一个都应该触发!奇怪的我收到了你建议的数据。我运行应用程序,它就会启动。然后我关闭WiFi(并确认我无法访问任何网站)再次运行应用程序,它仍然会启动??也许它还在通过3G建立连接。要测试这一点,请将手机置于飞行模式。只需在我的MacBook上使用模拟器即可。没有3G