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];
}
----------------------------------------- - - - - - - 提前致谢 - - - - - - - - - - - - - - - - - - -----------------