2016-04-02 12 views
2

の両方を検証するために我々は、このAlamofireのエラー処理を持っている:スウィフトAlamofire:どのように有効な要求と有効な応答コード

Alamofire.request(.GET, getUrl("mystuff")).responseData { response in 
    guard response.result.error == nil else { 
     //Handle error 
    } 
} 

など、サーバーに到達できないか、証明書が無効である場合、それがうまく機能

しかし、サーバーには到達できるが、404/etc応答コードを返す場合、このエラー処理コードはトリガーされません。このユースケースのサポートをこのコードにどのように折りたためることができますか?

答えて

0

を願っています.....私はAlamofire validateAPI methodを使用して終了:

Alamofire.request(.GET, getUrl("mystuff")).validate().responseData { response in 
    guard response.result.error == nil else { 
     //Handle error 
    } 
} 

これは、戻りコードの検証と一般的な接続の問題を処理します。また、コンテンツタイプの検証を処理します(詳細はリンク先のドキュメントを参照してください...)

1

応答のresultプロパティには、nilでなければコードが含まれます。 それ以外の場合は、statusCodeを取得できます。

if let error = response.result.error 
{ 
    let statusCode = error.code 
} 
else 
{ 
    let statusCode = (response.response?.statusCode)! 
} 
+1

これは感謝しています。しかし、Alamofire APIには自動的にこれを行うための素晴らしい方法があることがわかりました。 –

0

私は有効な要求、応答、および取得し、私のためにその作業であることを結果の両方を持っているが、私のコードは

Alamofire.request(.GET, "url", parameters: nil) 
       .responseJSON { (request, response, result) -> Void in 

        print(result.value) 

        if(result.isSuccess) { 
         completionBlock(error : nil, responseDict : result.value as! [String : AnyObject]) 
        } 
        else { 
         print("error") 
    //     completionBlock(error: errno_t, responseDict: nil) 
        } 

      } 

以下に示す。これは、ドキュメントを読むのに役立ちますその有用

+0

このコードを実行すると、404が返された場合でも 'isSuccess'がtrueになります。サーバーが停止している場合はfalseを返します。しかし、私は両方のケースを処理したい(両方に対してfalseを返す)。 –

関連する問題