问题标签 [nsurlsessiondatatask]
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.
ios8 - iOS8:NSURLSession:NSURLSessionDataTask '客户端在收到整个响应之前关闭连接'
我使用 iOS Background FETCH n Background TRANSFER 来更新我们的应用程序。
当我们下载 MP4 作为大量文件的大量下载的一部分时,下载可能会突然停止并出现错误:
'客户端在收到整个响应之前关闭了连接'
http代码还是200。
由于公司蜂窝帐户,我们对数据没有限制,并且我们的 iPad 上有单个应用程序,因此管理层希望我们在干净安装的某个时间超过 20/30 下载更多的数据和文件数量。它们是每天发布的企业视频/ pdf。
我创建了一个 NSURLSession
然后对于 mp4 或 PDF 的每个 URL,我从我的 NSURLSession 创建一个 NSURLSessionDownloadTask
每个下载任务的启动恢复。当所有返回 NSURLSession 完成时,我会在通知中告诉用户应用程序已更新。
我在我的 Mac 上使用 CHARLES PROXY 来监控下载。这需要一段时间,因为有很多文件,而且我注意到电影似乎在流式传输,所以可能很慢。通常它会检查已下载的内容,并且只下载最新的,但如果我进行大量下载,则说是全新安装,我注意到安静的流向 mp4 的流经常被杀死。他们有一个 200 代码,但有消息
'客户端在收到整个响应之前关闭了连接'
知道什么可能导致这种情况,因为它可以阻止我的 NSURLSession 完成,所以我的同步可以进入一种挂起状态。
图片:OK 下载:电影流并保存到磁盘:200:完成
图片:下载突然停止:
任何想法:我使用后台获取,所以不确定消息中的客户端是 iOS8 还是我的应用程序。在每个下载任务返回后,我将 tmp 文件复制到文档中的 mp4 并调用
如果其中一些下载任务失败,那么我注意到会话永远不会完成并卡住。当我再次获取时,我会得到所有这些旧的下载任务和旧的会话。
ios - App Delegate 中的 NSURLSessionDataTask
我正在尝试NSURLSessionDataTask
在后台获取时在我的应用程序委托中运行一个,但是尽管我从完成处理程序中获取了有效数据,但应用程序并未触发该方法。这是我的代码
ios - session.dataTaskWithURL 未按正确顺序执行
我正在调用 Web 服务。在该方法中 session.dataTaskWithURL 在一段时间后调用。我认为它没有给出正确的线程?
如果我们能以正确的顺序执行我的方法“session.dataTaskWithURL(url!, completionHandler: {(data, response, error) in”,你能帮我吗???提前谢谢。
swift - 当 NSURLSession 完成它的工作时转到另一个视图
我的问题是,当我在某些 api 调用完成后尝试转到另一个视图时,它不会转到下一个视图。这是下面的代码。提前致谢。
它确实打印了 api 调用完成并且控制台上没有错误。但它并没有进入另一个场景。
objective-c - 将 NSURLSessionDataTask 响应存储到 SQLite 数据库?
我的代码调用HTTP
远程服务器的 post call 并获取JSON
格式的结果,我已经提取了这个 JSON,但现在我需要将这些结果存储到 SQLite。根据我的阅读NSURLSessionDataTask
是后台线程,所以我的困惑是,我应该调用 SQL 打开并在里面插入completionHandler
(或)是否有任何其他最佳实践来处理这种类型的要求?
编辑 1
我更苦恼的一点是,在“completionHandler”中编写 SQLite 操作是否有效?“completionHandler”是否将被视为单独线程(正在执行 SessionDataTask)或主线程上的方法?
编辑 2
我也对 CoreData 相关的解决方案持开放态度。
任何帮助,将不胜感激。
ios - NSURLSessionTask 身份验证挑战完成处理程序和 NSURLAuthenticationChallenge 客户端
我正在实现一个自定义NSURLProtocol
,并且在内部希望将NSURLSession
数据任务与内部网络一起使用,而不是NSURLConnection
.
我遇到了一个有趣的问题,想知道NSURLSession
/的挑战处理程序的内部实现NSURLSessionTask
。
在这里,我基本上提供了两种不同的挑战处理程序,一个是completionHandler
块,它提供了处理挑战的所有必要信息,但也有一些遗留NSURLAuthenticationChallenge.client
的方法与completionHandler
的方法与信息选项
由于我正在开发一个协议,并且想将某些身份验证挑战向上传递到 URL 加载系统以供调用 API 实现,因此我需要使用NSURLSession
客户端方法:
我的问题是completionHandler
and的内部实现是否NSURLAuthenticationChallenge.client
相同,如果是,我可以跳过在委托方法中调用完成处理程序,期望 URL 加载系统会调用适当的NSURLAuthenticationChallenge.client
方法吗?
rest - 重新授权后重试 NSURLSessionDataTask 请求(在 Swift 中相当于 NSInvocation)
TL;DR 版本:在 Swift 中,最接近NSInvocation
或类似打包方法调用(包括参数)的方法是什么?
背景:我有一个ServerController
对象在我的应用程序中用于向 API 发出请求。魔术发生在这种方法中:
API 请求会定期失败并返回 401,并在应用程序中作为通知进行广播,因为许多各方都对请求将花费更长的时间这一事实感兴趣。另一个 API 请求用于刷新应用令牌,然后其他 API 请求再次开始工作。
这是我需要帮助的部分:然后我需要在重新授权后重复原始 API 请求。
以前在 Objective-C 中,我可能使用一个NSInvocation
对象来打包原始方法调用,但这在 Swift 中不可用,因此我认为必须有一种更像 Swift 的方法。但是,我还没有设法弄清楚。
到目前为止,我想出的最佳方法是:
- 将参数以及对的引用放入字典中,并将它们作为参数
ServerController
传递到通知中object:
- 在通知观察者中(完成重新授权后),将参数拉出字典并再次手动调用相同的方法以重复请求
这似乎是一个次优的解决方案,必须有更好的方法。
ios - IOS 发送 jsonArray 作为 POST 数据
您好我正在开发小型 IOS 应用程序,我想在其中发送 json 数组作为发布数据。我以以下方式尝试过:
我有这样的日志记录
状态码为零,错误是请求超时。
所以这是我的场景,我试图将 json 数组数据发送到我的服务器。一旦我在一段时间后开始我的 API 调用,它就会给我状态码为零并请求超时错误。但主要的是它正在更新我的服务器上的数据。那么为什么它给出状态码为零的错误。有什么我做错了或我错过了什么。它不断给出该错误。是不是因为 NSURLSessionConfiguration.
objective-c - 依次运行 3 种方法
我需要在调用 api(NSURLSessionDataTask 异步)的单独线程中一个接一个地运行 3 个方法。我查看了调度组,但这似乎同时运行方法 1 和 2,然后在它们完成时运行方法 3:
我需要它来运行方法 1,何时完成运行方法 2,何时完成最终运行方法 3(对方法进行排队)。
我知道我可以在每个完成时链接方法以运行下一个,但我认为会有更好的方法来解决这个问题......有什么想法吗?
ios - 带有 performSelector 的 NSURLSession:
我发现即使您的应用程序在最多 10 分钟内处于后台模式(最小化),iOS 也可以运行进程,并且要解决这个问题并使其永远运行,这是必要的:
需要定期下载和处理新内容的应用
这就是使用 NSURLSession API 向我的服务器发出请求的原因:
我们中的一些人知道即使在应用程序最小化的情况下也要运行进程,我们应该使用一些标签,但是如果您使用 API NSURLSession 就不再需要这种东西了,对吧?
在我的项目中,他需要每 1 小时在我的服务器上发出一次这样的请求,为此我在 block completionHandler 中添加了一个代码:每 1 小时调用一次执行发送命令文件到服务器。
我的问题是:10分钟的时间会影响选择器延迟3600秒吗?导致我的应用程序完全关闭,我无法将文件发送到服务器?