409在Alamofire成功了吗?

时间:2016-08-15 06:23:17

标签: ios http alamofire nsurlrequest

基于Alamofire实施网络时,发生了奇怪的事情。所以,我的后端可以返回409,当我得到它时,我想做出正确的反应,所以我选择常规解决方案:

Alamofire.request(someRequest).responseJSON { response in
    switch response.result {
    case .Success(let value):
        // I get 409 here...
        if response.response?.statusCode == 409 {
            // ...
        }
    case .Failure(let error):
        // While it should be here...
    }
}

为什么会这样?是某种后端问题还是什么?我只能做一个解释:请求已完成,即使你有.Success它也是409,但这个解释并没有说服我

1 个答案:

答案 0 :(得分:3)

HTTP 4.xx 类状态代码适用于客户端似乎有错误的情况,因此在正常情况下,您将向用户显示某种错误消息由服务器生成。

在Alamofire世界中,如果您希望响应生成错误(如果它具有不可接受的状态代码),则可以使用.validate()方法:

Alamofire.request(someRequest)
  .validate(statusCode: 200..<300)
  .responseJSON { response in
    switch response.result {
    case .Success(let value):
      ...
    case .Failure(let error):
      // You'll handle HTTP 409 error here...
  }
}