swift 2.1 alamofire超时方法

2024-04-18

我对 alamofire 超时方法有疑问, 首先,我的英语可能不够好,无法让你们理解我所说的...但我会厌倦解释我的问题

在我的项目中,我使用了 alamofire ,出于某种原因,我需要确保我的应用程序在连接不良的区域工作。所以我正在考虑使用超时方法。

我看到有人说,用 解决方案一:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.timeoutIntervalForRequest = 2 // seconds
    self.alamofireManager = Alamofire.Manager(configuration: configuration)
    self.alamofireManager!.request(.GET, "http://example.com/")
.response { (request, response, data, error) in

将解决问题,但就我而言,我看到调试区域说我的请求是“取消”

所以我尝试了我在这里看到的另一个解决方案(stackoverflow) 解决方案2:

let manager = Alamofire.Manager.sharedInstance
    manager.session.configuration.timeoutIntervalForRequest = 5
    manager.request(.POST, url, parameters: params, encoding: .JSON, headers: nil).response(queue: dispatch_get_main_queue()) { (Request, res, data, error) -> Void in{}

这种方法似乎应该有效,但只有当我让我的应用程序进入后台并反应我的应用程序时,调试区域才会显示请求“超时”,否则调试区域不会显示任何内容,除非我将其切换到后台并反应应用程序。

我正在使用 Xcode 7.1 和 ios 9.0

更新: 如果我使用解决方案2,如果我让requesttimeout = 5,调试区域将显示“超时错误”,但需要超过5秒...有时会显示30秒左右,但有时会超过1分钟.. ..

更新2: 我发现问题是什么了。问题是,如果您使用reachabilty框架来检测连接状态,那么系统可能会先检测连接是否打开,然后在isReachable之后显示请求超时(可能需要长达1分钟)。


基于NSURLSessionConfiguration 类参考 https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionConfiguration_class/index.html#//apple_ref/occ/instp/NSURLSessionConfiguration/timeoutIntervalForRequest

该属性决定所有任务的请求超时间隔 在基于此配置的会话内。请求超时 间隔控制任务应等待的时间(以秒为单位) 放弃之前要到达的附加数据。关联的计时器 每当新数据到达时,该值就会重置。当请求定时器 达到指定的时间间隔没有收到任何新数据,则 触发超时。

每当新数据到达时计时器就会重置,这就是为什么你有不同的错误时间。

您还可以为请求再设置一个参数:

manager.session.configuration.timeoutIntervalForResource = 5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

swift 2.1 alamofire超时方法 的相关文章

随机推荐

  • Firebase 更新 apple-app-site-association

    我正在实现动态链接 一切正常 除了在我的项目设置中我更改了 团队 ID 又名 AppStore 应用程序前缀 如果我访问myproject page link apple app site association它仍然给我旧的团队 ID 我
  • 如果我在实现工厂模式时使用抽象类而不是接口。它仍然是工厂模式吗?

    例如 http www tutorialspoint com design pattern factory pattern htm http www tutorialspoint com design pattern factory pat
  • MapReduce 排序和洗牌如何工作?

    我正在使用 yelps MRJob 库来实现映射缩减功能 我知道 MapReduce 有一个内部排序和洗牌算法 它根据键对值进行排序 所以如果我在地图阶段后得到以下结果 1 24 4 25 3 26 我知道排序和洗牌阶段将产生以下输出 1
  • 更新到 WorkManager 1.0.0-alpha09 后出现编译错误

    我正在尝试使用架构组件中的 WorkManager 我已将compileSdkVersion和targetSdkVersion从27升级到28 gradle同步已成功完成 但构建时错误不断出现 由于 android support desi
  • 加载表单演示文稿的模态视图的自定义尺寸

    我正在尝试在 iPad 中加载带有表单演示文稿的 UIViewController 问题是这个新视图的大小 我将大小值放在 IBuilder 中 但模式视图采用固定值 我也尝试在prepareForSegue中这样做 HelpViewCon
  • NSOpenPanel 的 setDirectoryURL 不起作用

    我正在尝试使用 NSOpenPanel 的新方法并设置其初始目录 问题是它只在第一次起作用 之后它只是 记住 最后选择的文件夹 这是我不想要的 我必须使用已折旧的 runModalForDirectory file 才能使其工作 它不太理想
  • 运行单元测试时如何禁用 PostSharp?

    我希望我的 nunit 测试不应用任何 PostSharp 方面 这样我就可以单独测试我的方法 这可以在测试夹具设置中以某种方式完成 还是只能在每个项目级别上完成 您可以在测试版本上设置 SkipPostSharp 标志 这样它就不会首先编
  • R将列表逐行写入CSV

    我在 R 中有以下代码 library party dat read csv data csv header TRUE train lt dat 1 1000 test lt dat 1000 1200 output tree lt cfo
  • 如何在 Qt 中重写 QApplication::notify

    我正在尝试处理 Qt 应用程序中的异常 我浏览了几篇文章 其中指出了重写 QApplication notify 方法以在 Qt 中以有效的方式处理异常 我不确定应该在哪里添加这个重写方法 是mainwindow h还是main cpp 我
  • 传单 GeoJSON 点*后面*多边形

    我有两个传单 geojson 层 它们都有点和多边形特征 我希望能够在地图上对它们进行排序 但是当我今天这样做时 尝试通过按特定顺序添加它们来排序它们 使用 BringToBack bringToFront 等 两个图层中的点图标都位于所有
  • 如何使用mockMvc检查响应正文中的字符串

    我有简单的集成测试 Test public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName throws Exception mockMvc perf
  • SSRS IE8 JavaScript 错误无效字符 ScriptResource.axd

    我的一位同事在 SSRS 中制作了各种报告 我们办公室中有两台机器无法通过 Internet Explorer 8 加载报告 两台机器都在报告 正在加载 屏幕上返回 JavaScript 错误 在这些特定的机器上 报告在 FireFox 中
  • 由于 MIME 类型为 text/html,样式表未加载

    在 Firefox 上运行 MERN 应用程序时 在浏览器控制台中出现此错误 并且未加载 css The stylesheet http localhost 3000 src css component css was not loaded
  • CSS中心显示内联块?

    我这里有一个工作代码 http jsfiddle net WVm5d http jsfiddle net WVm5d 您可能需要将结果窗口放大才能看到对齐中心效果 Question 该代码工作正常 但我不喜欢display table 这是
  • 如何从另一个控制器重定向到 Index?

    我一直在寻找某种方法来重定向到Index从另一个控制器查看 public ActionResult Index ApplicationController viewModel new ApplicationController return
  • 我何时以及为什么应该使用 attr.Factory?

    我应该何时以及为何使用attr ib default attr Factory list over attr ib default 来自docs http attrs readthedocs io en stable api html我看到
  • 如何使用 JQuery 和 Ajax 验证表单字段并将表单数据发布到服务器?

    我正在尝试验证表单字段 例如姓名 不得为空 Email id 必须有效 手机 必须有效 填写所有信息后 我必须将此信息发送到服务器 并将响应重定向到不同的页面 这里什么都不起作用 我的表单 html
  • 如何在 OpenCV 中获取单独的轮廓(并填充它们)?

    我试图分离图像的轮廓 为了找到均匀的区域 所以我应用了 cvCanny 然后应用了 cvFindContours 然后每次按下一个键时 我使用以下代码绘制 1 个轮廓 for contours2 0 contours2 contours2
  • “转到实现”以“符号没有实现”结尾

    当右键单击时 例如Visual Studio 中的方法并选择Go To Implementation它告诉我 该符号没有实现 我尝试过 services AddDbContext
  • swift 2.1 alamofire超时方法

    我对 alamofire 超时方法有疑问 首先 我的英语可能不够好 无法让你们理解我所说的 但我会厌倦解释我的问题 在我的项目中 我使用了 alamofire 出于某种原因 我需要确保我的应用程序在连接不良的区域工作 所以我正在考虑使用超时