2016-08-15 2 views
2

Alamofireに基づいてネットワークを実装しているうちに、奇妙なことが起こりました。だから、私のバックエンドは私を返すことができ409、私はそれを得るとき、私は適切に反応するようにしたいので、私は定期解決のために行ってきました:409はAlamofireで成功していますか?

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... 
    } 
} 

は、なぜそれが起こっているのでしょうか?それは何らかのバックエンドの問題ですか、それとも何ですか?私は1つの説明のことができる唯一の:それは.Successですので、あなたが409を持っていても、完了した要求が、この説明はステータスコードのクラスは、クライアントの状況のた​​めに意図されている4.XXくれ

答えて

2

HTTPを説得しません。間違っていると思われるので、通常は、サーバーによって生成されたときにユーザーに何らかのエラーメッセージを表示する必要があります。

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... 
    } 
} 
:あなたはそれを受け入れられない状態コードを持っていた場合、応答がエラーを生成する場合は

Alamofireの世界では

、あなたは.validate()方法を活用することができます

関連する問題