リクエストが失敗した場合(理想的には成功した場合も)の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本文を取得することは可能ですか?
ありがとう!