我使用此代码。
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 请帮我解释一下这段代码中的问题..
答案 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}}连接。