Tôi muốn truy xuất mã trạng thái phản hồi HTTP (ví dụ: 400, 401, 403, 503, v.v.) cho các yêu cầu không thành công (và lý tưởng cho cả thành công). Trong mã này, tôi đang thực hiện xác thực người dùng với HTTP Basic và muốn có thể thông báo cho người dùng rằng xác thực không thành công khi người dùng nhập sai mật khẩu của họ.
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")
}
Thật không may, lỗi được tạo ra dường như không cho thấy rằng mã trạng thái HTTP 409 thực sự đã được nhận:
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("")
JSON 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:nil
Ngoài ra, sẽ rất tuyệt khi truy xuất phần thân HTTP khi xảy ra lỗi vì phía máy chủ của tôi sẽ đặt một mô tả nguyên bản về lỗi ở đó.
Câu hỏi
Có thể truy xuất mã trạng thái khi phản hồi không phải 2xx không?
Có thể truy xuất mã trạng thái cụ thể khi phản hồi 2xx không?
Có thể truy xuất phần thân HTTP khi phản hồi không phải 2xx không?
Cảm ơn!