问题标签 [nsurlsessiontask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
11649 浏览

ios - NSURLSessionDataTask 与 NSURLSessionDownloadTask 有什么区别

在最新的苹果中引入了新NSURLSession的替换,所以有不同的任务,NSURLConnection那么有什么区别?NSURLSessionDataTaskNSURLSessionDownloadTask

在哪种情况下使用NSURLSessionTask以及在哪里使用NSURLSessionDownloadTask

0 投票
1 回答
2201 浏览

ios - NSURLSessionTask completionTask 永远不会在使用 GCD 的主队列中调用

我正在使用 iOS 7 NSURLSession 对 RESTful 服务进行一些简单的 GET 操作。这就是我所做的:

以上所有代码都可以正常工作。completionHandler 应该在主队列中被调用。

但是,如果我在 GCD 中使用它,就像这样:

现在,我想我在 dispatch_get_main_queue() 中运行该代码,它应该与会话的 delegateQueue 中指定的 [NSOperationQueue mainQueue] 相同?Tt 应该像第一组代码一样有效地在主线程中运行。但是,我发现完成处理程序永远不会被调用。如果我删除 GCD 代码,它会再次工作。

有没有人尝试过这样做?这应该工作吗?或者我误解了工作被分派到了哪个队列?

0 投票
1 回答
192 浏览

php - 使用 PHP 返回目录列表

我正在使用以下内容返回服务器上所有文本文件的列表。

我遇到的问题是,当我从我的应用程序执行这个 php 文件时,目录中只有一个文本文件,它按预期返回文件名的 JSON,但是当我重命名该文本文件或添加其他文件时,它会继续仅返回原始运行时存在的文件的名称。

我对 PHP 很陌生,我想知道我是否返回缓存数据而不是每次都刷新,或者这可能是我的应用程序发生的情况。

这是应用程序代码:

谢谢!

0 投票
1 回答
54 浏览

ios - 当我再次遇到特定对象时,如何最好地识别它们?

取 NSURLSession 的任务对象:

如果我在以下委托方法中:

如果我最终创建了一堆NSURLSessionDataTasks,我将如何检查哪个是dataTask指的。当然,我可以有一堆属性,但是如果我有 50 个任务,那会变得不守规矩,我希望能够在代码中自动设置它。

我知道该taskIdentifier方法可行,但它是readonly并且我希望能够设置它。

0 投票
1 回答
1235 浏览

ios - 我需要在单个流请求中使用 AFNetworking 将大量文件(最多 100 个)上传到服务器,这可以为我提供上传进度

使用 AFNetworking 2.0 进行流式传输请求时,我面临几个挑战。

我想将大量文件(~50MB)上传到服务器,并且请求必须流式传输。(否则应用程序会因内存压力而崩溃)

我在 AFNetworking 2.0 中尝试了各种方法,但没有成功。这就是我目前正在做的事情:

这工作正常,但它不是流式传输。如果请求太大,它会在内存中准备请求可能会崩溃。我曾尝试过原生套接字和流,但 Apple 表示他们可能会因此而拒绝该应用程序。

我尝试过的另一种方法如下:

但这给了我运行时错误说:

由于未捕获的异常“NSGenericException”而终止应用程序,原因:“后台会话中的上传任务必须来自文件”***首先抛出调用堆栈:(0 CoreFoundation 0x02cc75e4 __exceptionPreprocess + 180 1 libobjc.A.dylib
0x02a4a8b6 objc_exception_throw + 44 2 CFNetwork
0x0459eb6c -[__NSCFBackgroundSessionBridge uploadTaskForRequest:uploadFile:bodyData:completion:] + 994 3
CFNetwork 0x045f2f37 -[__NSCFURLSession uploadTaskWithStreamedRequest:] + 73

(必须是流媒体,并且能够在后台继续)

0 投票
1 回答
518 浏览

objective-c - 如何使用 NSURLSession 在 Objective-C 中上传到 ASP.NET

我需要将图像上传到我的 ASP.Net 网站,我已经让它与 NSURLConnection 一起使用,但是当我需要上传非常大的文件时,由于缺少 ram 将文件传输到 NSData 然后上传它而崩溃。所以我发现了新的 API NSURLSession 和方法 uploadTaskWithRequest:withFile 以允许传输更大的文件。我已更改 ASP.NET 服务器上的最大文件限制以允许大文件,并对其进行了测试,它适用于大文件(100MB+),但有时手机没有足够的内存来分配文件的 NSData,当我使用 NSURLConnection 时。我多次尝试 NSURLSession 都没有成功。

这是我尝试过的一个例子:

0 投票
1 回答
459 浏览

ios - 调用 [NSURLSessionDataDelegate resume] 时的 SIGSEGV

我最近使用 iOS 7 上的新 NSURLSession 完成了我的第一个项目。

我构建了一个应用程序来探索 NSURLSession 的整个 API,实现各种任务: - 数据任务 - 下载任务 - 上传任务

我还使用后台会话实现了后台上传。经过数小时的调试和反复试验,我终于达到了整个应用程序可以正常工作的地步——对我来说就是这样。我将它发布给少数测试人员(< 5),其中一些人遇到了一个我似乎无法重现甚至无法追踪的错误。

我的代码的某个部分 - 在一些不相关的操作之后 - 负责恢复后台会话中可用的当前上传任务:

有时,该应用程序在我的日志中崩溃并出现以下异常(我正在使用曲棍球应用程序):

SIGSEGV

在:

有任何想法吗 ?关于它可能是什么的任何提示?

提前致谢!泽

0 投票
2 回答
2539 浏览

ios - 使用 AFNetworking 2.0 拦截和防止重定向的推荐方法是什么?

在我看来,执行此操作的正确位置是AFURLSessionManager在设置taskWillPerformHTTPRedirection块中,但我不确定处理它的最佳方法。

目前,在我的AFHTTPSessionManager子类中,我正在为所有请求全局设置重定向块,并且我知道我可以通过返回nil此处来防止重定向:

...但我只需要对特定任务执行此操作,而且似乎没有办法从任务本身获取此信息。

我想我正在寻找某种用户信息字典或者我可以用来设置一个标志的东西,告诉这个方法要么 returnrequest要么 return nil。目前,看起来我必须对远离实际创建任务和路径的客户端中的响应/请求 URL 进行字符串比较。

所以这引出了一个问题,我是在违背惯例,还是真的没有更好的方法来逐个任务地拦截 AFNetworking 2.0 重定向?

0 投票
1 回答
2304 浏览

ios - NSURLSession - iOS 在与服务器通信时在后台杀死应用程序

我正在开发一个始终在后台运行的 BLE 应用程序。它从 BLE 外围设备获取健康相关数据,并将数据实时上传到服务器。我NSURLSessionNSURLSessionUploadTaskcreated using一起使用[NSURLSession uploadTaskWithRequest:myRequest fromFile:fileURL]将数据发送到服务器。

现在,该应用程序在后台按预期工作了 4-5 小时,但之后 iOS 会终止该应用程序。

这是崩溃日志。

我没有在 中实现[UIApplicationDelegate application:performFetchWithCompletionHandler:]方法AppDelegate,因为我认为这与后台下载有关。

为什么我的应用程序在使用NSURLSession后台配置时会崩溃?这与不实施有关[UIApplicationDelegate application:performFetchWithCompletionHandler:]吗?

谢谢。

0 投票
0 回答
1127 浏览

ios7 - NSURLSessionDownloadTask 在位置 URL 处没有文件完成

NSURLSessionDownload我使用任务和NSURLSession后台配置启动了一堆下载。大多数情况下一切正常,但有时回调方法中location指定的位置没有临时文件。delegate它发生在模拟器和设备上。这是代码,但一切看起来都非常简单,就像他们拥有 SimpleBackgroundTransfer 示例一样。

另外,奇怪的是,当这个奇怪的事情发生时,没有NSURLSessionDelegate调用其他方法,只是URLSession:downloadTask:downloadTask:location位置 URL 没有文件(downloadTask.originalRequest实际上有一个有效的下载 URL 和 downloadTask 中响应的状态代码是 200)。
如果发生这种奇怪的事情,它会发生在所有预定的下载中,就像系统根本无法创建文件一样。URLSession:downloadTask:downloadTask:location被立即调用。
重新启动设备/模拟器似乎总是有帮助。重新启动应用程序永远不会有帮助。
有没有人经历过这样的事情?