我关闭网络并运行我的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];
}
答案 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
这种方法意味着您在创建请求时应首先获得更多代码,但是当请求失败时,将会给出给定间隔的重试尝试。