【发布时间】:2015-05-21 18:43:18
【问题描述】:
我想检索请求失败的 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")
}
不幸的是,产生的错误似乎并不表明实际收到了 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("")
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
此外,如果发生错误,最好检索 HTTP 正文,因为我的服务器端会在其中放置错误的文本描述。
问题
是否可以在非 2xx 响应时检索状态码?
是否可以在 2xx 响应时检索特定的状态代码?
是否可以在非 2xx 响应时检索 HTTP 正文?
谢谢!
【问题讨论】:
-
如果您未经身份验证,您会收到 -999 设计。不确定这是为什么或如何解决...您解决了吗?