使用NSURLConnection连接失败,如何重新连接?

时间:2012-05-08 08:19:41

标签: iphone ios nsurlconnection

我关闭网络并运行我的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. 在此代码区域中,如果网络关闭,我该如何处理此代码?

3 个答案:

答案 0 :(得分:0)

您通常应该告诉用户出现了问题(例如,使用UIAlertView)。您可以要求用户再次尝试连接。你也可以,使这个"透明"对用户而言,只需再次尝试,用户不知道发生了什么。只需再次致电applistDBdownload即可。虽然,我认为您应该尝试创建一种最适合您需求的逻辑(如果您知道您的网络经常停机,请在警告用户之前尝试3到4次)。最后,您可以尝试更改服务器端(可能接收较小的软件包,因此在接收数据时网络的百分比会变小)。

答案 1 :(得分:0)

当您的网络转向时, - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 将在此处调用您可以添加以下行来请求agin [mConnection start]; 当你开始连接和平均时,如果你打开网络,你可以得到正确的连接。

答案 2 :(得分:0)

您可以使用处理重试HTTP请求的Apple MVCNetworking MVCNetworking

以下是Apple的派生版:MVCNetworking derived

这种方法意味着您在创建请求时应首先获得更多代码,但是当请求失败时,将会给出给定间隔的重试尝试。