Tag: nsurlsession

NSURLSession HTTP / 2内存泄漏

这个我的testing案例,指出当使用NSURLSession与HTTP / 2连接时有内存问题。 test1:iOS 9. HTTP / 2服务器 我使用NSURLSession将10Mfile upload到HTTP / 2服务器,如果上传的文件一切正常,但是如果我在上传任务完成之前取消上传任务,那么10M永远不会释放。 test2:iOS 9. HTTPs1.1服务器 我用https1.1文件服务器testing了相同的代码,我取消了上传任务,一切正常,内存恢复正常(10M数据发布) test3 iOS 8. HTTP / 2服务器 这种情况一切正常(NSURLSession没有与HTTP / 2协议协商) 所以,即使有一些不适合我的使用NSURLSession,NSURLSession的性能与HTTP / 2不正常。 除了内存问题之外,当使用NSURLSession和HTTP / 2来上传文件时,进度段的大小是巨大的(一次callback5月2日“didSendBodyData” 我也读过这个页面 。 SSL可能caching一些东西,但不应该caching整个文件(当我取消任务或请求超时,10M文件大小的内存泄漏) 任何人知道是什么原因造成的问题,可以给我一些帮助。 谢谢。 问题更新0912:添加testing项目链接 testing项目: https : //github.com/upyun/swift-sdk/tree/testleak file:UPUtils.swift //Change the url to make comparison test. //let DEFAULT_UPYUN_FORM_API_DOMAIN = "http://v0.api.upyun.com"//http1.1 //let DEFAULT_UPYUN_FORM_API_DOMAIN […]

你怎么知道什么时候NSURLSession对象被iOS无效?

我在我的testing中看到一个错误,偶尔出现以下iOS错误: 具有标识符{GUID}的后台URLSession已经存在! 即使在每次testing之后我都会在清理调用中的NSURLSession上调用invalidateAndCancel。 我正在寻找一种方法来等待,直到我确定NSURLSession对象已经失效,然后再继续下一个testing。

如何使用Swift 2 + XCode 7 + iOS 9获取和parsingJSON

正在寻找有用的教程与Swift 2和iOS 9的networking,但似乎主题没有在线内容。 我已经观看了WWDC会话使用NSURLSession进行networking连接但是我无法调整iOS9的新API来获取和parsingJSON数据的asynchronous方式。 我曾经尝试过: do { if let url = NSURL(string: "site/api.php?option=fetchOps"), let data = NSData(contentsOfURL: url), let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [[String:AnyObject]] { } } catch let error as NSError { print(error.description) } 请分享你在iOS9和Swift2networking上的经验,任何最佳实践也许是一个Singleton类的networking和parsing可能是一个ORM?

我们如何在Swift中嵌套JSON参数上传多部分表单数据?

我需要上传一个图像到结构必须如下的服务器端点: { "image": { "file": imageData }, "access_token": access_token } 我怎样才能发送这样的请求使用NSURLSession(或者甚至Alamofire或AFNetworking)?

带有无效恢复数据的NSURLSession

我使用[NSURLSessionConfiguration defaultSessionConfiguration]来configuration我的networking会话。 我通过调用cancelByProducingResumeData:来暂停任务cancelByProducingResumeData:产生一个恢复数据,并将其保存到磁盘。 当我想重新启动任务时,我打电话给downloadTaskWithResumeData: 它运行良好,直到我重新启动应用程序。 我暂停任务后,我杀了应用程序。 然后我再次启动我的应用程序,并调用downloadTaskWithResumeData ,我发现恢复数据是无效的。 我parsing恢复数据到NSDictionary,并得到NSURLSessionResumeInfoLocalPath ,这是 "/private/var/mobile/Containers/Data/Application/5DD071C3-9D5E-4D76-9F74-57B6C92445CB/tmp/CFNetworkDownload_IUI6kg.tmp" 。 我尝试访问这个文件,但它不存在。 我的问题是我怎样才能继续使用简历数据下载任务后,我重新启动我的应用程序。 谢谢。

在后台下载过程中,我的NSURLSessionDelegate方法没有被调用

我正在尝试使用NSURLSession来build立一个下载,它将在后台继续。 我有一个名为DownloadManager的单例类,它构buildNSURLSession并启动下载任务,如下所示: – (id)init { self = [super init]; if (self) { self.queue = [[NSOperationQueue alloc] init]; self.queue.maxConcurrentOperationCount = 1; // Initialize the background session. self.session = [self backgroundSession]; } return self; } – (NSURLSession *)backgroundSession { static NSURLSession *session = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"com.mycompany.myapp.BackgroundSession"]; session = [NSURLSession […]

在Swift中的HTTP长轮询

我试图在iOS 8 +中使用Swift实现一个长轮询解决scheme。 虽然解决scheme无疑是有效的,并且让主线程自由地进行UI交互,但是内存使用量不断攀升,所以我显然做错了什么。 我写的课程如下: enum LongPollError:ErrorType{ case IncorrectlyFormattedUrl case HttpError } public class LongPollingRequest: NSObject { var GlobalUserInitiatedQueue: dispatch_queue_t { return dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0) } var GlobalBackgroundQueue: dispatch_queue_t { return dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.rawValue), 0) } var longPollDelegate: LongPollingDelegate var request: NSURLRequest? init(delegate:LongPollingDelegate){ longPollDelegate = delegate } public func poll(endpointUrl:String) throws -> Void{ let url = NSURL(string: endpointUrl) […]

什么时候NSURLSession运行?

我有一种情况,当设备收到一个推送通知,我会发送一个NSURLSession与一个NSURLConnection结合。 我有几个有关NSURLSession的问题。 如果互联网连接丢失, NSURLSession's数据任务是否NSURLSession's在后台自动恢复? NSURLSession自动尝试完成任务,如果最初没有互联网,或会话刚刚返回一个错误?

基于NSURLSession的networking模式

我一直在使用NSOperation子类创build和pipe理自己的NSURLConnection的模式。 NSOperation子类由视图控制器实例化,并且在完成之前不会打扰控制器。 当完成检索数据时,它将执行由视图控制器提供的完成块。 ViewController实例化NSOperation子类(封装URL,参数等) NSOperation子类instanciates NSURLConnection(执行同步请求和检索数据) NSURLConnection将数据转储到NSOperation子类 NSOperation子类执行由视图控制器提供的完成块。 我试图现在与NSURLSession实现相同的模式。 我希望能够封装在一个对象内进行networking请求所需的url和参数。 我是否使用NSURLSession子类或NSURLSessionTask子类实现此目的? 我喜欢根据angular色devise模式为每个networking操作创build单独的类。

通过POST和NSURLSession上传图片NSData

我试图上传一个单一的UIImage到服务器,一切似乎是好的,除了图像从未上传。 这是我用来在iOS上载图片的代码: const NSString *boundaryConstant = @"———-V2ymHFg03ehbqgZCaKO6jy"; const NSString *fileParamConstant = @"photo"; NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; [request setHTTPMethod:@"POST"]; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundaryConstant]; [request setValue:contentType forHTTPHeaderField:@"Content-Type"]; NSMutableData *body = [NSMutableData data]; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library assetForURL:info[UIImagePickerControllerReferenceURL] resultBlock:^(ALAsset *asset) { ALAssetRepresentation […]