downloadTaskWithRequest不会同时下载

时间:2016-11-15 18:31:06

标签: http download nsurlsession nsurlsessiondownloadtask

Okej家伙。我们走了!!!

我在Objective-C中创建了一个使用NSURLSession的下载管理器。

我让经理在我的服务器上调用了一个php脚本,它创建了一个位于服务器上的文件的输出文件(在这种情况下是图像)。

我需要调用一个php脚本,以便我可以对来自Objective-C的调用进行安全检查。

Objective-C开始下载服务器的虚拟文件并将其保存到iPhone上的临时目录中。唯一不起作用的是同时下载文件。如果我使用downloadTaskWithRequest启动三个下载任务,则第一个下载任务将挂起第二个下载任务,直到完成为止。

如果我使用downloadTaskWithURL执行同样的操作,我将同时下载所有下载内容,这意味着无需等待。

我想要的是同时下载所有文件,但是使用downloadTaskWithRequest,而不是downloadTaskWithURL。

代码初始化NSULRSession

url = [NSURL URLWithString:kServerURL];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.HTTPMaximumConnectionsPerHost = 10;

session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];

代码从服务器方法请求文件

变量'question'包含服务器的数据(用户名,密码和要下载的文件)

//Pack it into a NSData
NSString *dataString = [NSString stringWithFormat:@"message=%@",question];
NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];

//Create a NSMutableURLRequest with method and body data
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = data;

//Prepare for call to server
NSURLSessionTask *post = [session downloadTaskWithRequest:request];

//Start the task
[post resume];

代码文件已完成下载方法

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{

    //Contains file destination name
    NSString *file = [[calls objectForKey:downloadTask] objectAtIndex:4]; 

    //Move temp file to new location
    NSString *destination = [[[[GlobalClass sharedManager] storagewraper] filemanager] moveFile:location.path name:file];

}

----------------------------------------- - - - - - - 提前致谢 - - - - - - - - - - - - - - - - - - -----------------

0 个答案:

没有答案