【问题标题】:Swift Alamofire response status codeSwift Alamofire 响应状态码
【发布时间】:2016-01-18 01:19:42
【问题描述】:

如何从 Alamofire response 获取状态码?

在最新版本中,我可以使用validate,但我需要检查状态码是什么。

代码:

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

         }

【问题讨论】:

标签: swift alamofire


【解决方案1】:

这行得通(在@MirzaDelic 指出我的错误之后):

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

【讨论】:

  • 不工作,但这工作:response.response.statusCode
  • 嗯,好的。我很抱歉。
【解决方案2】:

在 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)")
            }
    }

【讨论】:

    【解决方案3】:

    虽然上述方法可行,但还有一种更有效的方法可以做到这一点。 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 代码是好是坏。

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 2021-03-15
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多