Tag: nsurlsession

POST数据从Swift的PHP方法

我试图从Swift发布一些信息到我的PHP文件。 我的PHP文件被执行,但张贴的variables只是不能通过PHP文件。 我究竟做错了什么? SWIFT代码: @IBAction func buttonPress(sender: AnyObject) { let request = NSMutableURLRequest(URL: NSURL(string: "http://www.domain.com/php_swift_test/insert.php")!) request.HTTPMethod = "POST" let postString = "a=test&b=bla" request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=\(error)") return } print("response = \(response)") let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("responseString = \(responseString)") […]

NSURLSessionConfiguration timeoutIntervalForRequest似乎不适用于后台会话

当会话设置为在后台工作时(通过backgroundSessionConfiguration调用),NSURLSessionConfiguration的新超时属性似乎不起作用。 有人知道这是真的吗? 代码片段: NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:bgSessionConfigIdentifier]; sessionConfig.HTTPMaximumConnectionsPerHost = 1; sessionConfig.timeoutIntervalForRequest = 60; 我需要做额外的超时工作吗?

后台会话中的NSURLSessionDataTask

我想做一个空的POST请求,并阅读响应头,而我的iOS应用程序在后台。 查看文档,明确指出上传和下载任务在后台支持,但有两个问题: 我不需要上传内容,所以我不想创build一个空文件来使用。 我需要获取标题,所以下载任务不提供必要的委托callback。 这留给我一个NSURLSessionDataTask , 文档指出: 注意:在iOS 8和OS X 10.10之前,后台会话不支持数据任务。 但是, 另一个文档页面以相同的标题(背景传输注意事项)指出: 只支持上传和下载任务(没有数据任务)。 哪个文档页面是正确的? 在后台会话中是否支持NSURLSessionDataTasks 没有数据上传?

模糊使用select器dataTask(with:completionHandler :)

我试图得到一个在dataTask(with:completionHandler:)定义的dataTask(with:completionHandler:)方法的selector ,它使用像下面的URLRequest对象,但获取错误,因为有两个方法略有两个不同的参数名称(重载的方法 – 1。 URLRequest对象作为参数,另一个使用URL): let dataTaskSelector = #selector(URLSession.dataTask(with: completionHandler:)) 我已经尝试了下面的不同方法(在https://github.com/apple/swift-evolution/blob/master/proposals/0022-objc-selectors.md中提到),但它也给出了相同的错误: let mySelector = #selector((URLSession.dataTask(with: completionHandler:)) as (URLSession) -> (URLRequest, (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask) 我正在使用最新的Xcode和Swift 3.至今我还没有find类似的例子。 请帮忙。 提前致谢!

图片(或video)在Swift中发布到服务器

您好我正在使用NSURLSession在迅速发布json数据到服务器如下 var request = NSMutableURLRequest(URL: NSURL(string: "http://mypath.com")) var session = NSURLSession.sharedSession() request.HTTPMethod = "POST" var params2 :NSDictionary = ["email":"myemail@gmail.com"] var params :NSDictionary = ["function":"forgotPassword", "parameters":params2] var err: NSError? request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err) request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in var strData = […]

NSURLSessionTaskauthentication挑战completionHandler和NSURLAuthenticationChallenge客户端

我正在实现一个自定义NSURLProtocol ,并在内部想要使用NSURLSession数据任务的内部networking,而不是NSURLConnection 。 我碰到了一个有趣的问题,并想知道NSURLSession / NSURLSessionTask的质询处理程序的内部实现。 – (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler; 在这里,我基本上提供了两个不同的挑战处理程序,一个是completionHandler块,它提供了处理挑战的所有必要的信息,但是也有传统的NSURLAuthenticationChallenge.client ,它具有几乎与一对一对应的方法completionHandler信息选项。 由于我正在开发一个协议,并且想要向调用API实现的URL加载系统向上传递一定的authentication挑战,我需要使用NSURLSession客户端方法: – (void)URLProtocol:(NSURLProtocol *)protocol didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; 我的问题是completionHandler和NSURLAuthenticationChallenge.client的内部实现是否相同,如果是这样,我可以跳过在委托方法中调用完成处理程序,期望URL加载系统将调用适当的NSURLAuthenticationChallenge.client方法吗?

com.apple.NSURLSession-work EXC_BAD_ACCESS崩溃debugging

我看到下面的崩溃报告,但它不可重现。 我将如何去debugging它? 这是一个AFNetworking的问题? 我正在使用版本2.4.1。 Crashed: com.apple.NSURLSession-work EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0000000000000000 Thread : Crashed: com.apple.NSURLSession-work 0 CoreFoundation 0x0000000184aad978 CFDictionaryGetValue + 56 1 Foundation 0x0000000185aa9300 _NSSetLongLongValueAndNotify + 72 2 Foundation 0x0000000185aa9300 _NSSetLongLongValueAndNotify + 72 3 CFNetwork 0x0000000184543468 -[__NSCFLocalSessionTask _task_onqueue_didFinish] + 472 4 CFNetwork 0x0000000184544b38 -[__NSCFLocalSessionTask connection:didFinishLoadingWithError:] + 40 5 CFNetwork 0x000000018458d030 __46-[__NSCFURLSessionConnection _task_sendFinish]_block_invoke + 136 6 libdispatch.dylib […]

多部分表单上传和NSURLSession.uploadTaskWithRequest之间的区别

从networking编程的世界来看,我非常适合使用多部分表单请求来上传文件。 然而,在iOS中,我们有一个名为NSURLSession的方法,它的方法是uploadTaskWithRequest ,它似乎是调用来执行图像上传等的方法。 你能解释两种方法之间的差异, 多部分的forms上传 vs uploadTaskWithRequest ? 如果我已经有一个处理多部分表单上传的后端,我可能需要什么样的调整,以便它支持uploadTaskWithRequest ?

ETag和If-None-Match HTTP头不起作用

我有一个文件在我的networking服务器 ,我下载到我的应用程序,每次我访问它,因为它可能的文件内容可能会改变但如果它被改变,我想下载的时间只有这样带宽可以被保存,幸好这就是这个ETag和If-None-Match 头域是用于。 当我第一次发出请求时,我从HTTP响应头中检索ETag 在随后的下载文件的请求中,我会附加If-None-Match headerfield的Etag值,以便如果没有改变,那么我会得到HTTP响应状态码304,否则如果有在文件中更改。 注意: 当我尝试在高级REST客户端应用程序在铬中的上述步骤,它工作正常,因为它应该是,但是当我尝试在iOS中,我总是得到响应代码200,但它应该已经给我304后续请求。 这里是我使用的示例代码 var request1 = NSMutableURLRequest(URL:NSURL(string: "http://10.12.1.101/Etag/ringtone1.mp3")!) let Etagvalue="\"36170-52c1cc36d9b40\"" var session1 = NSURLSession.sharedSession() request1.HTTPMethod = "GET" var err: NSError? request1.addValue(Etagvalue, forHTTPHeaderField: "If-None-Match") var task = session1.dataTaskWithRequest(request1, completionHandler: {data, response, error -> Void in print("response: \(response)") }) 这是回应 响应:可选({URL: http : //10.12.1.101/Etag/ringtone1.mp3 } {状态码:200,标题{“Accept-Ranges”= bytes; Connection =“Keep-Alive”;“Content-Length” = 221552;“Content-Type”=“audio […]

创build一个非跟踪的应用内网页浏览器

我正在尝试创build一个webview(作为练习),它不会在本地跟踪或存储任何浏览历史logging。 我已经做到了,当webview被closures时,它会调用以下内容 [[NSURLSession sharedSession]resetWithCompletionHandler:^{}]; 但我发现像谷歌search历史的东西坚持一些如何之间的会议。 我也尝试通过分开清除cookie NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [storage cookies]) { [storage deleteCookie:cookie]; } [[NSUserDefaults standardUserDefaults] synchronize]; 依然无济于事。 Googlesearch仍会在创build新网页视图时显示。 有谁知道一种方法来删除标识符,谷歌正在使用匹配的search历史回到我? 我担心它就像包标识符,这可能是有点棘手,以防止被阅读。 任何想法都表示赞赏。 问候, 卢克