关于Alamofire版本的使用经理

时间:2015-06-18 04:44:39

标签: swift alamofire

我使用此代码。

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
  

错误:可选(错误域= NSURLErrorDomain代码= -999"已取消"   UserInfo = 0x7feb92c434f0 {NSErrorFailingURLKey = https   ://test.com/api/list/,NSLocalizedDescription =已取消,   NSErrorFailingURLStringKey = http s://test.com/api/list/})

为什么响应为nil且在版本1.2.2和1.2.3上resultJson为null 请帮我解释一下这段代码中的问题..

2 个答案:

答案 0 :(得分:12)

在将Alamofire从1.2.1更新为1.2.3后,我刚遇到与您今天相同的问题。

我通过在最后和responseJSON块内添加“manager.session.invalidateAndCancel()”来解决此问题。但是我无法理解的是,如果响应JSON块中的这行代码如何影响responseJSON结果。

无论如何,我只会运行此修复,直到Alamofire团队修复它或有人向我解释为什么会发生这种情况。

答案 1 :(得分:1)

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

  

HTTP <强>取值://test.com/api/list/

试试看以防万一,也许它重复你的情况。

就我而言,这是API管理器代码中的拼写错误。可以说该部分与App Transport Security Settings相关联。

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

  

NSURLErrorDomain代码= -999“已取消”

消失了,一切正常

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