iOS AFNetworking reintenta automáticamente la request cuando la connection a internet vuelve

¿AFNetworking para iOS ofrece una solución para las requestes fallidas de caching (por ejemplo, debido a que no hay connection a Internet) y vuelve a intentar automáticamente la request cuando la connection a Internet regresa.

Gracias dorin

Consulte la sección Network Reachability Manager del sitio AFNetworking. Al usar "Reachability", su manejador será llamado siempre que cambie la disponibilidad de la networking. Simplemente establezca setReachabilityStatusChangeBlock del AFHTTPRequestOperationManager (AFNetworking 2) o AFHTTPSessionManager (AFNetworking 3):

 AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: case AFNetworkReachabilityStatusReachableViaWiFi: // do whatever you want when network is available break; case AFNetworkReachabilityStatusNotReachable: default: // do whatever you want when network is not available break; } }]; [manager.reachabilityManager startMonitoring]; 

Como Matt dijo en AFNetworking problema # 393 , AFNetworking no tiene mecanismo de rebash:

Esto es algo que algunas personas han solicitado, pero cada caso de uso tenía requisitos sorprendentemente diferentes en lo que debería ser el comportamiento, lo que me lleva a creer que una solución general que es útil para todos los casos relevantes es intratable.

Soy de la opinión de que la request de reintentar es una preocupación de la aplicación (o tal vez incluso algo para que el usuario inicie); no es tan difícil de implementar usted mismo:

 - (void)downloadFileRetryingNumberOfTimes:(NSUInteger)ntimes success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure { if (ntimes <= 0) { if (failure) { NSError *error = ...; failure(error); } } else { [self getPath:@"/path/to/file" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { if (success) { success(...); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [self downloadFileRetryingNumberOfTimes:ntimes - 1 success:success failure:failure]; }]; } } 

No, pero puede detectar en el bloque de falla si la request tiene time de espera. Y puede volver a enviarlo en este caso (con como un contador de rebashs de algo así).