0

我关闭网络并运行我的 ios 程序。然后保持停止程序。

当我打开我的网络之后。我的程序仍然停止。

我想在 ios 中重新连接 NSURLConnection。

-(void) applistDBdownload
{
NSString *file = [NSString stringWithFormat:@"http://sok129.cafxxx.com/oneapplist.sqlite3"];
NSURL *fileURL = [NSURL URLWithString:file];

NSURLRequest *req = [NSURLRequest requestWithURL:fileURL];
connect= [NSURLConnection connectionWithRequest:req delegate:self];

fileData = [[NSMutableData alloc] initWithLength:0];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"fail");    -> come in when network off.
                   -> no come in when network on

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
          -> no come in when network on
          -> come in when network off 
}

1.如何重新连接?

  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if(self.connect!=connection)
{
    NSLog(@"noconnect");
    return;
}


 [self.fileData appendData:data]; 
}
  1. 在这个代码区域,如果网络关闭,我如何处理这个代码?
4

3 回答 3

0

您通常应该告诉用户出了点问题(UIAlertView例如,使用 )。您可以要求用户再次尝试连接。您也可以将其设置为对用户“透明”,然后在用户不知道发生了什么的情况下重试。再打电话给你applistDBdownload。虽然,我认为您应该尝试创建某种逻辑以最适合您的需求(如果您知道您的网络不断出现故障,请尝试 3 或 4 次,然后再警告用户)。最后,您可以尝试在服务器端进行更改(可能接收较小的包,因此在您接收数据时网络中断的百分比较小)。

于 2012-05-08T08:27:19.347 回答
0

当您的网络关闭时, - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 将在此处被调用,您可以添加以下行以请求 agin [mConnection start]; 当您开始连接并打开时,如果您打开网络,您可以获得正确的连接。

于 2012-05-08T08:55:36.790 回答
0

您可以使用处理重试 HTTP 请求的 Apple MVCNetworking 。MVC网络

以下是苹果派生的:MVCNetworking 派生

这种方法意味着您在创建请求时首先应该编写更多代码,但是当请求失败时,它将在给定的时间间隔内进行重试。

于 2012-05-08T09:26:32.903 回答