问题标签 [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 投票
1 回答
6634 浏览

ios - 如何使用 AFHTTPSessionManager 记录每个请求/响应?

我正在将我的项目迁移到 AFNetworking 2.0。在使用 AFNetworking 1.0 时,我编写了代码以在控制台中记录每个请求/响应。这是代码:

我正在尝试使用 AFNetworking 2.0 做同样的事情,据我了解,这意味着使用NSURLSessionDataTask对象而不是AFHTTPRequestOperation. 这是我的镜头。

dataTaskWithRequest:completionHandler方法成功拦截了每个调用,所以我认为这是正确的重写方法,但是当我尝试在 completionHandler 中记录任务时,task它是 nil。从而在控制台中打印空值。但是,该方法仍会返回适当的任务对象。这里发生了什么事?如何正确记录每个呼叫的请求/响应?

0 投票
5 回答
3115 浏览

ios - 处理 NSURLSessionDownloadTask 失败

最初我认为如果NSURLSessionDownloadTask成功完成 URLSession:downloadTask:didFinishDownloadingToURL:方法将被调用,如果由于某种原因失败 - URLSession:task:didCompleteWithError:。它在模拟器上按预期工作(一个下载任务只调用此方法中的一个),但在设备上情况并非如此:如果失败,这两个方法都会被调用,URLSession:downloadTask:didFinishDownloadingToURL:第一个是第一个。(这两种方法都在参数中传递相同的任务)

有什么我想念的吗?

0 投票
1 回答
38 浏览

ios - 如果 iOS 用户主动向视图添加数据,从服务器检索数据的最佳方法是什么?

我创建了一个列出酒店和房间的快速应用程序。我已经用 Rails 和 postgresql 创建了一个后端,并且已经在 heroku 上安装了它。我正在使用 JSON 在我的 iOS 前端之间来回传递信息。

这就是我想知道的。假设您有一个带有 UIBarButtonItem 的 TableViewController 用于添加新项目。添加了新项目,并且视图应该更新。

你怎么做到这一点?现在我的应用程序再次从服务器检索,这似乎很愚蠢。

我的列表中可能已经有 50 个项目。如果我添加一个新项目,服务器会再次被击中,现在检索 51 个项目。

解决这个问题的最佳方法是什么?

0 投票
1 回答
14419 浏览

ios - 如何在 iOS 7.1 中使用 NSURLSession 对 HTTP 请求和响应进行单元测试?

我想知道如何使用 NSURLSession 对 HTTP 请求和响应进行“单元测试”。现在,我的完成块代码在作为单元测试运行时不会被调用。但是,当从AppDelegate(didFinishWithLaunchingOptions) 中执行相同的代码时,会调用完成块中的代码。正如此线程中所建议的,NSURLSessionDataTask dataTaskWithURL 完成处理程序没有被调用,需要使用信号量和/或 dispatch_group “以确保主线程被阻塞,直到网络请求完成。”

我的 HTTP 邮政编码如下所示。

测试它的方法如下所示。

在我AppDelegate的 中,完成块代码确实有效,如下所示。

关于在单元测试中运行时如何执行完成块的任何指针?我是 iOS 的新手,所以一个清晰的例子真的很有帮助。

  • 注意:我意识到我所要求的也可能不是严格意义上的“单元”测试,因为我依赖 HTTP 服务器作为测试的一部分(意思是,我所要求的更像是集成测试)。
  • 注意:我意识到还有另一个线程Unit tests with NSURLSession关于使用 NSURLSession 进行单元测试,但我不想模拟响应。
0 投票
8 回答
31127 浏览

ios - 如何从 NSURLSessionTask 禁用缓存

在我的 iOS 应用程序中,我使用NSURLSessionTask将 json 数据下载到我的应用程序。我发现当我直接从浏览器调用 url 时,我会得到一个最新的 json,而当从应用程序中调用它时,我会得到一个旧版本的 json。

这是由于缓存吗?我怎么知道NSURLSessionTask不使用缓存。

这是我使用的调用:

谢谢!

0 投票
2 回答
1754 浏览

ios - 检查发生了哪种 NSURLSessionTask

我似乎遇到了麻烦。出于某种原因,如果我尝试检查NSURLSessionTask对象的类类型,它根本不起作用。如果我检查它们的taskDescription属性,如果我在启动任务之前设置它们,这当然有效。我只想知道为什么下面的代码对我不起作用。感谢您提供的任何帮助!

0 投票
1 回答
1579 浏览

ios - iOS8扩展后台NSURLSession沙箱报错

我正在尝试使用后台 NSURLSession 从照片应用程序中的共享扩展上传文件。因为后台 NSURLSession 仅支持使用 uploadTaskWithRequest:WithFile: API 的上传任务,所以我首先获取从扩展中检索到的图像 URL 的 URL,将图像内容写入共享容器,然后上传新文件。似乎 NSURLSession 有权限问题,我收到此错误:

“无法为文件 file:///private/var/mobile/Containers/Shared/AppGroup/ 发出沙盒扩展...”

我知道有一些类似的帖子,但没有一个是从扩展加载 url,也没有显示将临时文件写入的位置。

这是代码:

0 投票
1 回答
2898 浏览

nsurlsession - 如何在状态栏中指示网络活动

我在我的 iOS 应用程序中使用 Alamofire 进行联网。我需要在 iOS 7+ 中运行这个应用程序。我想在状态栏中指示网络活动,所以我创建了这个结构:

但我不知道,在哪里调用代码addActivity()removeActivity()方法。我不想在每个请求中都写它们。我想,每个请求都会自动调用它们。

我也尝试使用纯NSURLSessionNSURLSessionTask扩展它们:

然后我像这样使用它们:

但这种方法行不通。在 iOS 7 中NSURLSession扩展是不可见的。我为此创建了一个错误报告(带有示例项目)。

你能给我一些建议,如何达到我的目标?有或没有 Alamofire?

0 投票
3 回答
5075 浏览

ios - How to determine when NSURLSessionTask's request begins?

I use NSURLSessionTasks and I'm trying to monitor how long some of my HTTP Requests take, what delegate method (or something else) can I monitor for when the NSURLSessionTask actually makes the initial request? If this were a NSURLConnection inside an NSOperation I'd just start a timer when I start the request but I don't have control over when tasks start.

0 投票
1 回答
2248 浏览

objective-c - 强制等待 NSURLSessionDataTask 完成

我正在制作一个URLRequest发送尝试登录信息并等待来自网络服务的响应以查明用户是否可以/无法登录。

我希望这样做的方法是让用户在两个文本字段中输入他的用户名和密码,然后按下一个按钮,这将调用下面的函数。此函数将启动并构造一个结构,其中包含登录NSURLSessionDataTask的布尔成功/失败NSString和相应的错误消息(如果有)。

问题是我的函数在我的NSURLSessionDataTask's完成块完成执行之前返回了结构。有没有办法让我的程序等到这个任务超时或完成?或者,我可以在函数返回之前将完成块的执行推送到主线程上吗?

谢谢!如果我需要做任何澄清,请告诉我!

(此外,我在 StackOverflow 上看到了一些类似的问题,其中提到了 GCD。这是一个矫枉过正的解决方案吗?这些问题似乎都不是在谈论完全相同的事情,或者说的水平高于我目前的理解。我对 Objective-C 还是很陌生)

...(创建请求和设置 HTTP 正文)