2015-10-19 135 views
3

如何從Alamofire response獲取狀態碼?Swift Alamofire響應狀態代碼

在最新版本中,我可以使用validate,但我需要檢查狀態碼是什麼。

代碼:

Alamofire.request(.GET, "http://example.com/url") 
     .responseJSON { response in 

     } 
+0

http://stackoverflow.com/a/33192390/3405387 – Lukas

+1

嘗試'response.response.statusCode'。 – Adam

+0

這工作,它看起來不好,但它的工作:) –

回答

4

這工作(後@MirzaDelic指出我的錯誤):

Alamofire.request(.get, "http://www.google.com") 
    .responseJSON { response in 
     if response.response.statusCode == 404 { 
      // do something 
     } else { 
      // do something else 
     } 
} 
+0

不起作用,但這個工程:'response.response.statusCode' –

+0

好的。我很抱歉。 – damianesteban

1

在Alamofire 4.0 swift3分支,正是我需要:

Alamofire.request(request, withMethod: .get, parameters: parameters, encoding: .url, headers: nil) 
     .validate() 
     .responseJSON { response in 
      switch response.result { 
      case .success: 
       let statusCode = (response.response?.statusCode)! 
       print("...HTTP code: \(statusCode)") 
      } 
    } 
0

雖然上述方法將起作用,有一種更有效的方式來做到這一點。 response.response.statusCode返回一個很大數量的狀態碼。 Alamofire包含兩個對這種情況有用的功能,isSuccessisFailure

Alamofire.request(.get, "http://example.com/url").responseJSON { response in 
    let responseErrorCode = response.response!.statusCode 

    if response.result.isSuccess { 
     print("Successful HTTP code: \(responseErrorCode)") 

     // Run code if request is successful 

    } else if response.result.isFailure { 
     print("Failure HTTP code: \(responseErrorCode)") 

     // Run code if request isn't successful 

    } 
} 

通過使用上面的代碼,您可以很容易地知道HTTP代碼是好還是壞。