【问题标题】:Setting timeoutInterval on Alamofire DataRequest在 Alamofire DataRequest 上设置 timeoutInterval
【发布时间】:2020-04-23 08:22:44
【问题描述】:

我正在制作一个自定义类,它在其初始化程序中采用 Alamofire DataRequest。现在我想给它添加一个 timeoutInterval,但是我得到了编译错误

“DataRequest”类型的值没有成员“timeoutInterval”

代码如下:

init(request: DataRequest, timeoutInterval: Double = 10) {
    request.timeoutInterval = timeoutInterval // <- compile error here
    self.request = request
}

显然 Alamofire DataRequest 没有该属性。但是有没有其他方法可以以这种方式指定请求的超时时间(最好不使用 SessionManager)? URLRequest 有,所以应该可以,但我不知道怎么做。

我知道之前在 Stack Overflow 上已经提出过这个问题,但我找不到任何适合这种情况的答案。

【问题讨论】:

  • 当前使用 Alamofire 4.0

标签: swift alamofire nsurlrequest


【解决方案1】:

在 Alamofire 5.1 中,我们向顶级 request 方法添加了一个 requestModifier 参数,让您可以访问将要执行的 URLRequest

在 Alamofire 4 中,您有一些不太优雅的选项。设置它的一种直接方法是使用 RequestAdapter 将其设置为请求管道的一部分。另一个更复杂的选择是从采用单个参数(例如标头)的顶级 request 方法转移到采用 URLRequestConvertible 值的 API。这样您就可以完全控制 Alamofire 代表您执行的 URLRequests。

【讨论】:

  • 能否请您详细说明如何使用RequestAdaptor,因为我在尝试此操作时收到'adapt' is inaccessible due to 'internal' protection level-error:let urlRequest = try request.request?.adapt(using: MyRequestAdapter())
  • 我升级到 Alamofire 5.1,然后一切都变得简单多了,谢谢。
猜你喜欢
  • 2021-12-22
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 2017-10-14
  • 2016-11-11
相关资源
最近更新 更多