关于使用管理器的 Alamofire 版本

About Alamofire version for use manager

我用这个代码。

var apiPath : String = "/api/list/"
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 60
let manager = Alamofire.Manager(configuration: configuration)
manager.session.configuration.HTTPAdditionalHeaders = ["_token" : self._token]
manager.request(.GET, self._host + self._url + apiPath, parameters: nil)
    .responseSwiftyJSON ({ (request, response, resultJson, error) in
        if (resultJson["Success"]) {
             //get list success
        } else {
            println("request : \(request)")
            println("response : \(response)")
            println("resultJson : \(resultJson)")
            println("error : \(error)")
        }

})

我遇到了一些问题

Alamofire 版本 1.2.1:没问题

Alamofire 版本 1.2.2 和 1.2.3:

request : { URL: https://test.com/api/list/ }

response : nil

resultJson : null

error : Optional(Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo=0x7feb92c434f0 {NSErrorFailingURLKey=https ://test.com/api/list/, NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=http s://test.com/api/list/})

为什么在版本 1.2.2 和 1.2.3 上响应为 nil 而 resultJson 为 null 请帮我看看这段代码有什么问题..

我今天刚把 Alamofire 从 1.2.1 更新到 1.2.3 后遇到了和你一样的问题。

我发现通过在末尾和 responseJSON 块内添加 "manager.session.invalidateAndCancel()" 解决了这个问题。但是我无法理解的是,responseJSON 块中的这行代码如何影响 responseJSON 结果。

无论如何,我会 运行 进行此修复,直到 Alamofire 团队修复它或有人向我解释为什么会这样。

我注意到您的 API 端点指向安全连接:

httpS://test.com/api/list/

试试以防万一,说不定又重复你的情况

就我而言,这是 API 管理器代码中的错字。从这部分可以说是与App Transport Security Settings有关。

刚刚将受保护的协议从 httpS:// 更改为 http:// 并且错误:

NSURLErrorDomain Code = -999 "cancelled"

消失了,一切正常

+如果您也有类似的问题。请务必 与处理服务器或 API 应用程序配置的后端专家 讨论此问题。这意味着服务器没有有效的安全证书。也许您仍然需要安全连接。或者这位专家可以再次配置从 http://httpS:// 的所有内容,我不确定(没有检查)当您在代码中已经使用非安全 http://连接。