是否可以为Alamofire请求添加超时处理程序?

在我的项目中,我使用Alamofire的方式如下:

init() {
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.timeoutIntervalForRequest = 30

    self.alamofireManager = Alamofire.Manager(configuration: configuration)
}

func requestAuthorizationWithEmail(email:NSString, password:NSString, completion: (result: RequestResult) -> Void) {

    self.alamofireManager!.request(.POST, "myURL", parameters:["email": email, "password":password])
        .responseJSON { response in
            switch response.result {
            case .Success(let JSON):
                //do json stuff
            case .Failure(let error):
                print("\n\nAuth request failed with error:\n \(error)")
                completion(result: .ConnectionFailed)
            }
    }
}

编辑:

请求失败消息

Error Domain=NSURLErrorDomain Code=-1001"请求超时."UserInfo={NSUnderlyingError=0x7fc10b937320{Error Domain=kCFErrorDomainCFNetwork Code=-1001"(null)"UserInfo={{kCFStreamErrorCodeKey=-2102,{kCFStreamErrorDomainKey=4}},NSerrorFailingurStringKey=url,NSerrorFailingurKey=url,{kCFStreamErrorDomainKey=4,{KCFStreamerCodeKey=-2102,NSLocalizedDescription=请求超时.}

推荐答案

你可以比较error._code,如果它等于-1001,也就是NSURLErrorTimedOut,那么你知道这是一个超时.

let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = 120

manager.request("yourUrl", method: .post, parameters: ["parameterKey": "value"])
        .responseJSON {
            response in
            switch (response.result) {
            case .success: // succes path 
            case .failure(let error):
                if error._code == NSURLErrorTimedOut {
                    print("Request timeout!")
                }
            }
        }

Swift相关问答推荐

多个提取来计算核心数据中的记录

@ MainActor + Combine不一致的编译器错误

如何在SWIFT中解码Instagram Backup中的字符串?

SWIFT闭包使用的是陈旧的值,即使它是S@转义

我正在try 通过代码设置节中页眉和页脚的高度,但它不起作用

SWIFT计划计时器方法在时间间隔后未被调用

协议元类型'SomeProtocol.Type'上无法使用静态成员'currency'

为什么无法在 Swift 中使用AVFoundation扫描 QRCode

在 Swift 5.7 中使用协议作为类型时什么时候需要写 `any`

是否可以利用 Codable 从 Dictionary 初始化符合类型

memcpy 复制带偏移量的数组

如何制作具有 2 个视图的 3D 旋转动画?

自定义选取器的出现导致其他视图重新排列

SwiftUI:调用以编程方式创建的视图的函数

(SwiftLint)如果有正文,如何编写规则(可能是自定义),在{之后总是\n(换行)?

Swift 自定义字体 Xcode

Swift中switch 盒的详尽条件

调整文本的字体大小以适应 UIButton

Type 应该采用什么协议来让泛型函数将任何数字类型作为 Swift 中的参数?

Swift 5 秒后关闭 UIAlertView