问题标签 [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.

0 投票
2 回答
1963 浏览

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:完成

图像:OK 下载:电影流并保存到磁盘:200:完成

图片:下载突然停止:

图片:下载突然停止: 图片:下载突然停止:

任何想法:我使用后台获取,所以不确定消息中的客户端是 iOS8 还是我的应用程序。在每个下载任务返回后,我将 tmp 文件复制到文档中的 mp4 并调用

如果其中一些下载任务失败,那么我注意到会话永远不会完成并卡住。当我再次获取时,我会得到所有这些旧的下载任务和旧的会话。

0 投票
1 回答
466 浏览

ios - App Delegate 中的 NSURLSessionDataTask

我正在尝试NSURLSessionDataTask在后台获取时在我的应用程序委托中运行一个,但是尽管我从完成处理程序中获取了有效数据,但应用程序并未触发该方法。这是我的代码

0 投票
1 回答
659 浏览

ios - session.dataTaskWithURL 未按正确顺序执行

我正在调用 Web 服务。在该方法中 session.dataTaskWithURL 在一段时间后调用。我认为它没有给出正确的线程?

如果我们能以正确的顺序执行我的方法“session.dataTaskWithURL(url!, completionHandler: {(data, response, error) in”,你能帮我吗???提前谢谢。

0 投票
1 回答
526 浏览

swift - 当 NSURLSession 完成它的工作时转到另一个视图

我的问题是,当我在某些 api 调用完成后尝试转到另一个视图时,它不会转到下一个视图。这是下面的代码。提前致谢。

它确实打印了 api 调用完成并且控制台上没有错误。但它并没有进入另一个场景。

0 投票
2 回答
246 浏览

objective-c - 将 NSURLSessionDataTask 响应存储到 SQLite 数据库?

我的代码调用HTTP远程服务器的 post call 并获取JSON格式的结果,我已经提取了这个 JSON,但现在我需要将这些结果存储到 SQLite。根据我的阅读NSURLSessionDataTask是后台线程,所以我的困惑是,我应该调用 SQL 打开并在里面插入completionHandler(或)是否有任何其他最佳实践来处理这种类型的要求?

编辑 1

我更苦恼的一点是,在“completionHandler”中编写 SQLite 操作是否有效?“completionHandler”是否将被视为单独线程(正在执行 SessionDataTask)或主线程上的方法?

编辑 2

我也对 CoreData 相关的解决方案持开放态度。

任何帮助,将不胜感激。

0 投票
1 回答
2734 浏览

ios - NSURLSessionTask 身份验证挑战完成处理程序和 NSURLAuthenticationChallenge 客户端

我正在实现一个自定义NSURLProtocol,并且在内部希望将NSURLSession数据任务与内部网络一起使用,而不是NSURLConnection.

我遇到了一个有趣的问题,想知道NSURLSession/的挑战处理程序的内部实现NSURLSessionTask

在这里,我基本上提供了两种不同的挑战处理程序,一个是completionHandler块,它提供了处理挑战的所有必要信息,但也有一些遗留NSURLAuthenticationChallenge.client的方法与completionHandler的方法与信息选项

由于我正在开发一个协议,并且想将某些身份验证挑战向上传递到 URL 加载系统以供调用 API 实现,因此我需要使用NSURLSession客户端方法:

我的问题是completionHandlerand的内部实现是否NSURLAuthenticationChallenge.client相同,如果是,我可以跳过在委托方法中调用完成处理程序,期望 URL 加载系统会调用适当的NSURLAuthenticationChallenge.client方法吗?

0 投票
0 回答
405 浏览

rest - 重新授权后重试 NSURLSessionDataTask 请求(在 Swift 中相当于 NSInvocation)

TL;DR 版本:在 Swift 中,最接近NSInvocation或类似打包方法调用(包括参数)的方法是什么?

背景:我有一个ServerController对象在我的应用程序中用于向 API 发出请求。魔术发生在这种方法中:

API 请求会定期失败并返回 401,并在应用程序中作为通知进行广播,因为许多各方都对请求将花费更长的时间这一事实感兴趣。另一个 API 请求用于刷新应用令牌,然后其他 API 请求再次开始工作。

这是我需要帮助的部分:然后我需要在重新授权后重复原始 API 请求。

以前在 Objective-C 中,我可能使用一个NSInvocation对象来打包原始方法调用,但这在 Swift 中不可用,因此我认为必须有一种更像 Swift 的方法。但是,我还没有设法弄清楚。

到目前为止,我想出的最佳方法是:

  • 将参数以及对的引用放入字典中,并将它们作为参数ServerController传递到通知中object:
  • 在通知观察者中(完成重新授权后),将参数拉出字典并再次手动调用相同的方法以重复请求

这似乎是一个次优的解决方案,必须有更好的方法。

0 投票
1 回答
397 浏览

ios - IOS 发送 jsonArray 作为 POST 数据

您好我正在开发小型 IOS 应用程序,我想在其中发送 json 数组作为发布数据。我以以下方式尝试过:

我有这样的日志记录

状态码为零,错误是请求超时。

所以这是我的场景,我试图将 json 数组数据发送到我的服务器。一旦我在一段时间后开始我的 API 调用,它就会给我状态码为零并请求超时错误。但主要的是它正在更新我的服务器上的数据。那么为什么它给出状态码为零的错误。有什么我做错了或我错过了什么。它不断给出该错误。是不是因为 NSURLSessionConfiguration.

0 投票
2 回答
576 浏览

objective-c - 依次运行 3 种方法

我需要在调用 api(NS​​URLSessionDataTask 异步)的单独线程中一个接一个地运行 3 个方法。我查看了调度组,但这似乎同时运行方法 1 和 2,然后在它们完成时运行方法 3:

我需要它来运行方法 1,何时完成运行方法 2,何时完成最终运行方法 3(对方法进行排队)。

我知道我可以在每个完成时链接方法以运行下一个,但我认为会有更好的方法来解决这个问题......有什么想法吗?

0 投票
1 回答
270 浏览

ios - 带有 performSelector 的 NSURLSession:

我发现即使您的应用程序在最多 10 分钟内处于后台模式(最小化),iOS 也可以运行进程,并且要解决这个问题并使其永远运行,这是必要的:

需要定期下载和处理新内容的应用

这就是使用 NSURLSession API 向我的服务器发出请求的原因:

我们中的一些人知道即使在应用程序最小化的情况下也要运行进程,我们应该使用一些标签,但是如果您使用 API NSURLSession 就不再需要这种东西了,对吧?

在我的项目中,他需要每 1 小时在我的服务器上发出一次这样的请求,为此我在 block completionHandler 中添加了一个代码:每 1 小时调用一次执行发送命令文件到服务器。

我的问题是:10分钟的时间会影响选择器延迟3600秒吗?导致我的应用程序完全关闭,我无法将文件发送到服务器?