我想检索请求失败的HTTP响应状态代码(例如400,401,403,503等)(理想情况下也是成功的).在此代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户输错密码时向用户发送身份验证失败的消息.
Alamofire.request(.GET, "https://host.com/a/path").authenticate(user: "user", password: "typo")
.responseString { (req, res, data, error) in
if error != nil {
println("STRING Error:: error:\(error)")
println(" req:\(req)")
println(" res:\(res)")
println(" data:\(data)")
return
}
println("SUCCESS for String")
}
.responseJSON { (req, res, data, error) in
if error != nil {
println("JSON Error:: error:\(error)")
println(" req:\(req)")
println(" res:\(res)")
println(" data:\(data)")
return
}
println("SUCCESS for JSON")
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409:
STRING Error:: error:Optional(Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo=0x7f9beb8efce0 {NSErrorFailingURLKey=https://host.com/a/path, NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=https://host.com/a/path})
req:<NSMutableURLRequest: 0x7f9beb89d5e0> { URL: https://host.com/a/path }
res:nil
data:Optional("") …Run Code Online (Sandbox Code Playgroud) 这是我第一次使用Alamofire它,它让我非常沮丧.
我正在使用以下代码在后端API上调用注册API
Alamofire.request(.POST, "\(self.authBaseURL)/signup", parameters: params, headers: headers, encoding: .JSON)
.validate(statusCode: 200..<300)
.validate(contentType: ["application/json"])
.responseJSON { response in
switch response.result {
case .Success(let JSON):
print("Success with JSON: \(JSON)")
success(updatedUser)
case .Failure(let error):
print("Request failed with error: \(error)")
failure(error)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我在.Failure函数中获得的错误对象不包含服务器端消息.我试图访问其余的对象(请求,响应,数据,结果)我无法在任何地方找到我的错误消息
无论服务器消息说什么,我总是会收到以下错误.请求失败并显示错误:
FAILURE:Error Domain = com.alamofire.error Code = -6003"响应状态代码不可接受:400"UserInfo = {NSLocalizedFailureReason =响应状态代码不可接受:400}
我在做什么有什么不对吗?
Swift 2.2,AlamoFire 3.3.0,Xcode 7.3