2012-05-08 27 views
0

私のネットワークをオフにして、私のiosプログラムを実行します。 その後、プログラムを停止してください。NSURLConnectionを使用して接続できませんでした。どのように再接続しますか?

ネットワークの電源を入れた後。私のプログラムはまだ止まる。

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. ネットワークをオフにした場合、どのように私は、このコードで取り扱うのですか?

答えて

0

通常、ユーザーには何かが間違っていたことを伝える必要があります(たとえば、UIAlertViewを使用)。ユーザーに再度接続を試みるように要求することができます。また、ユーザーにこれを「トランスペアレント」にし、ユーザーが何が起こったのかを知らずに再試行することもできます。もう一度applistDBdownloadに電話してください。しかし、あなたのニーズに最も適した何らかのロジックを作成しようとするべきだと思いますが(ネットワークが絶えずダウンしているのを知っている場合は、ユーザーに警告する前に3〜4回試してみてください)。最後に、サーバ側で変更を試みることができます(おそらく、より小さいパッケージを受け取るので、データを受け取っている間にネットワークのダウン率が小さくなります)。

0

ネットワークがのターンで、 - (無効)接続:(NSURLConnection *)接続didFailWithError:(NSError *)エラー uはagin を要求するため、以下の行を追加することができ、ここで呼び出されます[スタートmConnection]。 接続を開始したときに、ネットワークに接続すると正しい接続が確立されます。

0

再試行HTTPリクエストを処理するApple MVCNetworkingを使用できます。 MVCNetworking

次一つはApple社から由来する1つである:MVCNetworking derived

この種のアプローチは、あなたの要求を作成するときに、最初は少しより多くのコードを必要があることを意味するが、要求が失敗した場合、それは再試行を与えられます所定の間隔で試行する。

関連する問題