Sto tentando di scaricare un file utilizzando AFNetworking (2.5.4). Completato il download, il gestore di completamento si chiama, con l'errore set a zero, tutto bene apparente, ma il file di destinazione non esiste:AFNetworking downloadTaskWithRequest: progress: destination: completionHandler: scrittura del file sul percorso
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *fullPath = [valid path from my apps local manager]
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
return [NSURL URLWithString:fullPath];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"Saved file to %@.", filePath);
*** [[NSFileManager defaultManager] fileExistsAtPath:filePath.absoluteString] returns NO here ***
}];
[cell.progressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES];
[downloadTask resume];
Il percorso del file è un percorso regolare che la mia applicazione ha accesso in scrittura:
/var/mobile/Containers/Data/Application/APP-GUID-REDACTED/Documents/FILE-NAME-REDACTED.docx
stavo usando un metodo diverso prima AFNetworking, e potrebbe scrivere al percorso esattamente lo stesso bene. Le intestazioni di risposta HTTP mostrano tutto perfettamente (stato 200, lunghezza del contenuto corretta, ecc.) E se si arriccia l'URL di download scarica il file senza problemi. Non ci sono problemi con il file.
Perché il mio file di destinazione non è stato scritto nel gestore di completamento nonostante nessun errore?
UPDATE: Ho anche provato AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
ma non cambia nulla. Ho anche provato a creare un puntatore NSProgress
e inviarlo per l'argomento progress
, ma senza risultato.
Ha funzionato. Non so perché l'altro non funzionava. –