Tag: nsurlsession

意想不到的无效返回值在无效函数(Swift 2.0)

我一直在浏览StackOverflow的问题,试图找出我的代码出错的地方,但我似乎无法做到! 我正试图将我的Swift 1.2项目转换为Swift 2.0,并且我的类下载JSON数据时遇到问题。 我不断地收到错误在void函数中意外的非void返回值 。 这是我正在使用的代码,有些被截断了; … class func fetchMinionData() -> [Minion] { var myURL = "http://myurl/test.json" let dataURL = NSURL(string: myURL) let request = NSURLRequest(URL: dataURL!, cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 5.0) let session = NSURLSession.sharedSession() session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in let minionJSON = JSON(data!) var minions = [Minion]() for (_, minionDictionary) in minionJSON […]

我如何使用NSURSession的NSOperationQueue?

我正在尝试构build一个批量图像下载器,可以将图像添加到队列中以供下载,我可以找出进度以及下载完成的时间。 通过我的阅读,似乎NSOperationQueue的队列function和NSURLSession的networkingfunction似乎是我最好的select,但我很困惑,如何使用这两个串联。 我知道我添加NSOperation实例到NSOperationQueue ,他们排队。 看来我创build一个NSURLSessionDownloadTask的下载任务,如果我需要多个任务,多个,但我不知道我怎么把这两个在一起。 NSURLSessionDownloadTaskDelegate似乎有我需要的下载进度和完成通知的所有信息,但我也需要能够停止特定的下载,停止所有下载,并处理从下载中获得的数据。

如何发送POST和GET请求?

我想发送我的JSON到一个URL( POST和GET )。 NSMutableDictionary *JSONDict = [[NSMutableDictionary alloc] init]; [JSONDict setValue:"myValue" forKey:"myKey"]; NSData *JSONData = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:nil]; 我目前的请求代码不起作用。 NSMutableURLRequest *requestData = [[NSMutableURLRequest alloc] init]; [requestData setURL:[NSURL URLWithString:@"http://fake.url/"];]; [requestData setHTTPMethod:@"POST"]; [requestData setValue:postLength forHTTPHeaderField:@"Content-Length"]; [requestData setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [requestData setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [requestData setHTTPBody:postData]; 使用ASIHTTPRequest 不是一个负责任的答案。

如何在没有完成块的NSURLSession中获取服务器响应数据

我正在使用NSURLSession进行背景图片上传。 并根据上传的图像我的服务器给我的回应,我确实相应地改变我的应用程序。 但是当我的应用程序在后台上传图像时,我无法得到我的服务器响应,因为没有完成块。 有没有办法获得响应,而不使用NSURLUploadTask完成块? 这是我的代码: self.uploadTask = [self.session uploadTaskWithRequest:request fromData:body completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"returnString : %@",returnString); NSLog(@"error : %@",error); }]; [self.uploadTask resume]; 但是我得到这个错误 由于未捕获的exception“NSGenericException”而终止应用程序,理由是:“后台会话中不支持完成处理程序块。 使用委托代替。 但是,如果我不能使用完成处理程序比我应该如何得到服务器响应。 它说使用委托,但我找不到任何委托方法,可以给我服务器响应。

与Alamofire的NSURLSession并发请求

我正在使用我的testing应用程序遇到一些奇怪的行为。 我有大约50个同时发送到同一个服务器的GET请求。 服务器是一个embedded式服务器上的一小部分硬件资源非常有限。 为了优化每个请求的性能,我configuration一个Alamofire.Manager实例如下: let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() configuration.HTTPMaximumConnectionsPerHost = 2 configuration.timeoutIntervalForRequest = 30 let manager = Alamofire.Manager(configuration: configuration) 当我通过manager.request(…)发送请求时,它们会以2对的forms发送(如预期的那样,使用Charles HTTP Proxy进行检查)。 奇怪的是,所有在第一个请求30秒内没有完成的请求,由于同时超时而被取消(即使它们还没有被发送)。 下面是一个展示行为的例子: 这是一个预期的行为,我怎样才能确保请求不会得到超时之前,他们甚至被发送? 非常感谢!

资源无法加载,因为应用传输安全策略需要使用安全连接

当我将Xcode更新到7.0或iOS 9.0时,我正面临着这个问题。 不知何故,它开始给我的标题错误 “由于App Transport安全策略要求使用安全连接,因此无法加载资源” Webservice方法: -(void)ServiceCall:(NSString*)ServiceName :(NSString *)DataString { NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; [sessionConfiguration setAllowsCellularAccess:YES]; [sessionConfiguration setHTTPAdditionalHeaders:@{ @"Accept" : @"application/json" }]; NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",ServiceURL]]; NSLog(@"URl %@%@",url,DataString); // Configure the Request NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setValue:[NSString stringWithFormat:@"%@=%@", strSessName, strSessVal] forHTTPHeaderField:@"Cookie"]; request.HTTPBody = [DataString dataUsingEncoding:NSUTF8StringEncoding]; […]

如何在Swift中使用NSURLSession downloadTask按顺序下载多个文件

我有一个应用程序必须下载多个大文件。 我希望它逐一下载每个文件,而不是同时下载。 当它同时运行的应用程序得到超载和崩溃。 所以。 我试图包装在NSBlockOperation downloadTaskWithURL,然后在队列上设置maxConcurrentOperationCount = 1。 我在下面编写了这个代码,但它没有工作,因为两个文件同时下载。 import UIKit class ViewController: UIViewController, NSURLSessionDelegate, NSURLSessionDownloadDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. processURLs() } func download(url: NSURL){ let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: nil) let downloadTask […]

如何在NSURL中使用特殊字符?

我的应用程序使用这样的NSURL: var url = NSURL(string: "http://www.geonames.org/search.html?q=Aïn+Béïda+Algeria&country=") 当我试图从这个NSURL获取数据的任务是这样的: let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in if error == nil { var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding) println("urlContent \(urlContent!)") } else { println("error mode") } 但是当我试图从那个地址获取数据的时候出现错误,虽然当我使用safari去链接时:“ http://www.geonames.org/search.html?q=Aïn+Béïda+ Algeria&country =”我可以看到数据。 我该如何解决这个问题?

带有NSBlockOperation和队列的NSURLSession

我有一个应用程序,目前使用NSURLConnection绝大多数的networking。 我想转移到NSURLSession因为苹果告诉我这是要走的路。 我的应用程序通过+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error类方法使用NSURLConnection的同步版本。 我在一个在NSBlockOperation运行的NSOperationQueue这样做,所以我不会不必要地阻塞主队列。 以这种方式做事情的一大好处是,我可以使操作相互依赖。 例如,我可以让请求数据的任务依赖于login任务完成。 我没有看到NSURLSession任何同步操作的支持。 我能find的所有文章都是引用我,甚至想到同步使用它,而且我是一个封锁线程的可怕的人。 精细。 但是我看不NSURLSessionTask彼此依赖的方法。 有没有办法做到这一点? 还是有一种描述,我会如何以不同的方式做这样的事情?

使用NSURLSession发送POST请求

更新:find解决scheme。 你可以在post结尾阅读。 我正在尝试使用NSURLSession向远程REST API执行POST请求。 这个想法是用两个参数: deviceId和textContent进行请求。 问题是这些参数不被服务器识别。 服务器部分正常工作,因为我已经使用POSTMAN发送了一个POST的谷歌浏览器,它的工作完美。 这是我现在使用的代码: NSString *deviceID = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceID"]; NSString *textContent = @"New note"; NSString *noteDataString = [NSString stringWithFormat:@"deviceId=%@&textContent=%@", deviceID, textContent]; NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; sessionConfiguration.HTTPAdditionalHeaders = @{ @"api-key" : @"API_KEY", @"Content-Type" : @"application/json" }; NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; NSURL *url = [NSURL URLWithString:@"http://url_to_manage_post_requests"]; NSMutableURLRequest *request = […]