【发布时间】:2015-07-29 03:55:38
【问题描述】:
编辑:问题不是关于 -999 的含义,而是为什么我没有在第一个代码片段中出现错误,而是在第二个代码片段中出现错误? 除了在第二个代码 sn-p 中使用 Alamofire.Manager(应该与第一个代码 sn-p 中的 Alamofire.request 相同),一切都是相同的。 这是一个错误,还是我错过了什么?
我有一个可以与 Alamofire.request 一起使用的函数...
func getMenuFromIsoShortDate(menuDate: String) {
let user = Constants.DummyCredentials.UserName
let password = Constants.DummyCredentials.PassWord
var urlString = ""
let dateForWebservice: NSDate? = NSDate.dateFromIsoString(menuDate)
if let dateForWebservice = dateForWebservice {
urlString = Constants.WebservicePath.DailyMenu + NSDate.dateToIsoSlash(dateForWebservice)
println("urlString: \(urlString)")
}
let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)
Alamofire.request(.GET, urlString)
.authenticate(usingCredential: credential)
.response {
(request, response, data, error) in
if let response = response {
var statusCode = response.statusCode
println("-->statusCode: \(statusCode)")
}
if (error == nil) {
var serializationError: NSError?
let jsonData: AnyObject? = NSJSONSerialization.JSONObjectWithData(data! as! NSData, options: NSJSONReadingOptions.AllowFragments, error: &serializationError)
var parser: Parser = Parser()
let menu: Menu = parser.parseMenuJSON(jsonData)
var dataAccess: DataAccess = DataAccess.sharedInstance
dataAccess.addMenu(menu)
} else {
println("Webservice error: \(error)")
}
}
}
但是当我使用 manager.request 运行代码时 - 它运行,但给了我 -999 错误。这里是修改后的代码:
func getMenuFromIsoShortDate(menuDate: String) {
let user = Constants.DummyCredentials.UserName
let password = Constants.DummyCredentials.PassWord
var urlString = ""
let dateForWebservice: NSDate? = NSDate.dateFromIsoString(menuDate)
if let dateForWebservice = dateForWebservice {
urlString = Constants.WebservicePath.DailyMenu + NSDate.dateToIsoSlash(dateForWebservice)
println("urlString: \(urlString)")
}
let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
manager = Alamofire.Manager(configuration: configuration)
manager.request(.GET, urlString)
.authenticate(usingCredential: credential)
.response {
(request, response, data, error) in
if let response = response {
var statusCode = response.statusCode
println("-->statusCode: \(statusCode)")
}
if (error == nil) {
var serializationError: NSError?
let jsonData: AnyObject? = NSJSONSerialization.JSONObjectWithData(data! as! NSData, options: NSJSONReadingOptions.AllowFragments, error: &serializationError)
var parser: Parser = Parser()
let menu: Menu = parser.parseMenuJSON(jsonData)
var dataAccess: DataAccess = DataAccess.sharedInstance
dataAccess.addMenu(menu)
} else {
println("Webservice error: \(error)")
}
}
}
这里是错误信息:
Webservice error: Optional(Error Domain=NSURLErrorDomain Code=-999 "Abgebrochen" UserInfo=0x7f8f11c3f210 {NSErrorFailingURLKey=http://test.myserver.de:18507/app/services/mampf/get-menu/2015/05/08, NSLocalizedDescription=Abgebrochen, NSErrorFailingURLStringKey=http://test.myserver.de:18507/app/services/mampf/get-menu/2015/05/08})
这是怎么回事?
【问题讨论】:
-
错误-999表示请求被取消。当您未能通过身份验证质询时,可能会发生这种情况。
-
@mattt 当然可以,但是为什么使用管理器实例会发生这种情况,而不是使用 Alamofire.request?其余代码完全相同