У меня есть Nsurlsesiondownloadtask
хода, который я использую, чтобы загрузить файл XML локально размещенный на скажем: URL - http://10.232.254.59/catalogue.xmldidcompletewitherror возвращения ноля даже для запроса с плохим URL
Проблема заключается в том, когда я использую URL - http://10.232.254.59/catalogue.x или URL - http://10.232.254.59/catal или любая другая комбинация без изменения IP, didcompletewitherror
делегат дает мне ошибку = (null).
// MainViewController.m
@interface MainViewController()
{
NSURLSessionDownloadTask *download;
}
@property(nonatomic,strong)NSURLSession *backgroundSession;
- (void)viewDidLoad {
NSURLSessionConfiguration *ConfigurationObject = [NSURLSessionConfiguration defaultSessionConfiguration];
ConfigurationObject.timeoutIntervalForRequest = 10.0;
ConfigurationObject.timeoutIntervalForResource = 10.0;
self.backgroundSession = [NSURLSession sessionWithConfiguration:ConfigurationObject delegate:self delegateQueue:nil];
[self LoadMediaUrl_StartTask_StartActivityIndicator];
}
-(void)LoadMediaUrl_StartTask_StartActivityIndicator{
NSURL *url ;
url = [self mediaUrlFromSettings];
if(url.absoluteString.length != 0){
download = [self.backgroundSession downloadTaskWithURL:url];
[download resume];
--do more stuff---
}
}
- (void)URLSession:(NSURLSession *)session downloadTask:(nonnull NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(nonnull NSURL *)location{
NSLog(@"didFinishDownloadingToURL called");
NSFileManager *fileManager = [NSFileManager defaultManager];
dispatch_async(dispatch_get_main_queue(), ^{
*** start the parser ***
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success" message:[NSString stringWithFormat:@" Catalogue Download Success! Press OK to Load New Media List."] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"cancel", nil];
alert.tag = ALERT_VIEW_DOWNLOAD_SUCCESS;
[alert show];
});
-(void)URLSession:(NSURLSession *)session task:(nonnull NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error
{
NSLog(@"didCompleteWithError error : %@",[error localizedDescription]);
if(error != nil){
dispatch_async(dispatch_get_main_queue(), ^{
[self.downloadActivityIndicator stopAnimating];
[self.downloadProgressView setHidden:YES];
self.DownloadImageView.alpha = 1.0;
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error" message:[NSString stringWithFormat:@" Catalogue Download Failed ! %s%@","\n",[error localizedDescription]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Retry", nil];
alert.tag =ALERT_VIEW_DOWNLOAD_FAILED;
[alert show];
});
}
download = nil;
}
я получаю правильную ошибку в didCompleteWithError
когда IP меняется, но не тогда, когда я изменить IP/*, из-за чего даже в случае плохой URL, скачать предупреждение успеха показывает вверх.
Я также получаю звонок делегатадаже в плохом случае.
Я звоню LoadMediaUrl_StartTask_StartActivityIndicator
еще в нескольких местах и используя тот же backgroundSession obj.
Может ли кто-нибудь рассказать мне, что может быть причиной?
Не отправляйте ответы на вопросы в ответ. Опубликованный ответ должен полностью ответить на вопрос, а не задавать другой вопрос. – rmaddy